首页 > 解决方案 > Pandas 将索引的级别 1 转换为列的级别 0

问题描述

我在任何地方都找不到解决方案,所以我在这里问。

我有一个看起来像这样的数据框。这里AB是 MultiIndex 的索引,C,D是列标题。

A   B   C   D
a1  b1  0   4
a1  b2  1   5

如何切换第 1 级索引以使其成为第 0 级列,以便得到这样的结果 -

A/B        
          b1            b2
      C        D     C      D
a1    0        4     1      5

这似乎是对数据框的简单操作,但我找不到任何东西。

标签: pythonpandasmulti-index

解决方案


使用DataFrame.unstack, 但必须MultiIndex通过DataFrame.swapleveland进行更改DataFrame.sort_index

df = df.unstack().swaplevel(1,0, axis=1).sort_index(axis=1)
print (df)
B  b1    b2   
    C  D  C  D
A             
a1  0  4  1  5

或来自@piRSquared 的解决方案:

df = df.stack().unstack(0).T

推荐阅读