如何在Pandas中将列索引转换为行索引?

时间:2019-01-12 17:35:57

标签: python pandas

我有一个熊猫数据框,如下所示:

           A           B
Date       a   b   c   a    b   c 
20180101   1   1   1   365 365 365
20180102   2   2   2   364 364 364
...      ... ... ...  ...  ... ...
20181231 365 365 365    1    1   1

您可以看到我有一个多级列索引。但是,我想将其转换为以下格式:


                    a   b   c
Date     Catelog1
20180101        A   1   1   1
                B 365 365 365
20180102        A   2   2   2
                B 364 364 364 
...           ... ... ... ... 
20181231        A 365 365 365 
                B   1   1   1 

但是,对于我来说,这并不明显,我们如何实现这一目标,如果我在列轴上有两个以上的层次,而我只想将其保留在底部并将所有以上索引移到列上,该怎么办?行轴?

1 个答案:

答案 0 :(得分:1)

设置

idx = pd.MultiIndex.from_product([list('AB'), list('abc')])
df = pd.DataFrame(0, columns=idx, index=list('pqrs'))

df
   A        B      
   a  b  c  a  b  c
p  0  0  0  0  0  0
q  0  0  0  0  0  0
r  0  0  0  0  0  0
s  0  0  0  0  0  0

使用swaplevelstack

df.swaplevel(0, 1, axis=1).stack()

     a  b  c
p A  0  0  0
  B  0  0  0
q A  0  0  0
  B  0  0  0
r A  0  0  0
  B  0  0  0
s A  0  0  0
  B  0  0  0

另一种替代方法是使用参数stack的{​​{1}}:

level=0
相关问题