- stack():从列到行堆叠,把列转换为行
- unstack():从行到列展开,把行转换为列
1 stack
data=pd.DataFrame(np.arange(12).reshape((3,4)),
index=pd.Index(['date1','date2','date3']),
columns=pd.Index(['store1','store2','store3','store4'])
)
data
data.stack().to_frame()
2 unstack
第一列index作为unstack后的index
为了和stack以示区别,我们交换前面stack后的两个index
data.stack().to_frame().swaplevel(0,1)
data.stack().swaplevel(0,1).unstack()
2.1 unstack 的内容是multi-index
2.1.1 数据
data=pd.DataFrame(np.arange(12).reshape((3,4)),
index=[['date1','date1','date3'],
['idx1','idx2','idx1'],
['type1','type1','type2']],
columns=['store1','store2','store3','store4']
)
data
2.1.2 默认
默认是最后一个index 被unstack掉
data.unstack()
2.1.3 设置level
将哪个index unstack掉
data.unstack(level=1)
data.unstack(level=[0,1])