2012 2013 2012 2013
women women men men
0 14 43 24 45
1 34 54 35 65
并希望得到它
women men
2012 0 14 24
2012 1 34 35
2013 0 43 45
2013 1 54 65
使用df.stack,df.unstack没有到达任何地方?
任何优雅的解决方案?
答案 0 :(得分:2)
In [5]: df
Out[5]:
2012 2013
women men women men
0 0 1 2 3
1 4 5 6 7
我们的想法是首先将列的第一级堆叠到第一级索引,然后交换两个索引(pandas.DataFrame.swaplevel)
In [6]: df.stack(level=0).swaplevel(0,1,axis=0)
Out[6]:
men women
2012 0 1 0
2013 0 3 2
2012 1 5 4
2013 1 7 6
答案 1 :(得分:0)
df.stack
很可能是你想要的。请参阅下文,您需要指定您想要的第一级。
In [79]: df = pd.DataFrame(0., index=[0,1], columns=pd.MultiIndex.from_product([[2012,2013], ['women','men']]))
In [83]: df.stack(level=0)
Out[83]:
men women
0 2012 0 0
2013 0 0
1 2012 0 0
2013 0 0