Python Pandas:对于多索引数据框,如何交换行和一个索引列?

时间:2017-01-07 20:36:56

标签: python pandas dataframe

我有一个像下面这样的pandas多索引数据框:

               col1  col2
    ind1 ind2            
    A    x        3     2
         y        2     0
    B    x        2     4
         y        2     3
    C    x        3     1
         y        0     0

现在我想把ind2(x,y)作为列,将col1和col2作为第二级索引,如下所示:

                     x     y
    ind1 col            
    A    col1        3     2
         col2        2     0
    B    col1        2     4
         col2        2     3
    C    col1        3     1
         col2        0     0

我尝试了几种方法,但都失败了,有没有简单的方法来实现它?

谢谢!

1 个答案:

答案 0 :(得分:0)

这是一种执行此操作的hacky方法。由于您基本上用索引替换列的名称,您可以手动获取列和索引名称,然后切换它们。

# grab column and index names
col_names = df.columns.values
idx_names = df.index.levels[1].values

# replace them and then rename the inner index
df.index.set_levels(col_names, level=1, inplace=True)
df.columns = idx_names
df.index.set_names('col', level=1, inplace=True)

          x  y
ind1 col       
A    col1  3  2
     col2  2  0
B    col1  2  4
     col2  2  3
C    col1  3  1
     col2  0  0