【Python】Pandas DataFrame 一維表二維表的轉換


目錄
一、stack & unstack
unstack 將一維表轉換為二維表
stack 將二維表轉換為一維表
二、pivot & melt
pivot 將一維表轉換為二維表
melt將二維表轉換為一維表
Tips
用pandas處理數據,我們經常獲取到的是從數據庫或者excel中獲取的一維表。而常常需要重排,轉換為二維表,類似於excel中的透視。

舉例:
一維表 df

1 df = pd.DataFrame(
2 {
3 'key1':['one','two','three','one','two','four'],
4 'key2':['A','B','C','D','C','D'],
5 'value':np.random.randn(6)
6 }
7 )

 

 

二維表 df2

 

 

 


介紹兩種轉換方式。

一、stack & unstack


stack 和 unstack 的工作機制都是依賴於dataframe本身的多層索引進行轉換的。
默認情況下,最內層是unstack的,也可以指定層級序號或名稱來拆分特定層級。

unstack 將一維表轉換為二維表

 1 # 第一步
 2 df1 =df.set_index(['key1','key2'])
 3 # 運用unstack,不寫參數,默認轉換最里層的index,也就是key2;
 4 df2=df1.unstack()
 5 df2.reset_index()
 6 
 7 
 8 
 9 # 也可以指定要轉換的索引
10 df1.unstack('key1')
11 # 或
12 df1.unstack(0)

 

 

最后,可以通過reset_index方法去除索引。

stack 將二維表轉換為一維表

1 df2.stack()

 



二、pivot & melt
pivot 將一維表轉換為二維表

1 df.pivot('key1','key2','value')


melt將二維表轉換為一維表

 

1 pd.melt(df,['key1','key2'])


也可以指定列的子集為值列

 

1 pd.melt(df,id_vars=['key1'], value_vars=['value'])



Tips
stack 和unstack方法可以用來處理多層數據。
也就是行和列索引不只一個的情況。

可參考 (https://blog.csdn.net/qq_41080850/article/details/86294173)

multiindex 的索引方式

外層索引可以包含式地使用內層索引,反過來則不行
————————————————
版權聲明:本文為CSDN博主「RessCris」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/weixin_41783424/article/details/109515240


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM