目錄
一、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