pandas進行數據重排時,經常用到stack和unstack兩個函數。stack的意思是堆疊,堆積,unstack即“不要堆疊”
常見的數據的層次化結構有兩種,一種是表格,一種是“花括號”,即下面這樣的l兩種形式:
stack函數會將數據從”表格結構“變成”花括號結構“,即將其行索引變成列索引,反之,unstack函數將數據從”花括號結構“變成”表格結構“,即要將其中一層的列索引變成行索引
原數據:
import numpy as np import pandas as pd from pandas import Series,DataFrame data=DataFrame(np.arange(6).reshape((2,3)), index=pd.Index(['street1','street2']),columns=pd.Index(['one','two','three']))
原數據堆疊:
data1=data.stack() ''' 輸出: street1 one 0 two 1 three 2 street2 one 3 two 4 three 5 dtype: int32 '''
原數據不堆疊:
data2=data.unstack() ''' 輸出: one street1 0 street2 3 two street1 1 street2 4 three street1 2 street2 5 dtype: int32 '''
原數據堆疊后在解開,這個一個用於groupby之后,得到不堆疊的二維表格
data3=data.stack().unstack()