在使用pandas進行數據整理時,經常會用到stack和unstack兩個函數。stack直譯過來是堆疊,堆積,unstack是展開。但是stack和unstack的作用類似於pivot和unpivot,stack用於把列轉換爲行,而unstack用於把行轉換爲列。因此,可以把stack和unstack的功能解釋爲行列互換。
- stack():從列到行堆疊,把列轉換爲行
- unstack():從行到列展開,把行轉換爲列
1,創建數據集
import numpy as np import pandas as pd data=pd.DataFrame(np.arange(12).reshape((3,4))+100, index=pd.Index(['date1','date2','date3']), columns=pd.Index(['store1','store2','store3','store4']) )
2,堆疊數據,把列轉換爲行
data2=data.stack()
使用stack函數,將data的列['store1','store2','store3’,'store4’]轉變成列索引(第二層),便得到了一個層次化的Series(data2),如下所示:
輸出到本地以後,可以變成這樣:
3、展開數據,把行轉換爲列
使用unstack函數,將data2的第二層列索引轉變成行索引(默認的,可以改變),便又得到了DataFrame(data3)
data3=data2.unstack()
參考文檔: