删除多索引级别但保留列的名称 - 熊猫

时间:2017-06-19 10:20:34

标签: python pandas multi-index

我有df看起来像这样

   a     b      c
              c1  c2
0  87    33   32  34
1  32    10   45  62
2  78    83   99  71

我想删除c级别,但保留所有其他列名称

   a     b    c1  c2
0  87    33   32  34
1  32    10   45  62
2  78    83   99  71

df.columns = df.columns.droplevel(0)有效但ab的名称消失了

              c1  c2
0  87    33   32  34
1  32    10   45  62
2  78    83   99  71

1 个答案:

答案 0 :(得分:3)

我认为您可以使用set_index + droplevel + reset_index

df = df.set_index(['a','b'])
df.columns = df.columns.droplevel(0)
df = df.reset_index()
print (df)
    a   b  c1  c2
0  87  33  32  34
1  32  10  45  62
2  78  83  99  71

['c']选择列的另一种解决方案:

df = df.set_index(['a','b'])['c'].reset_index()
print (df)
    a   b  c1  c2
0  87  33  32  34
1  32  10  45  62
2  78  83  99  71

但如果从pivot_table solution获取,则删除[]或删除参数values='c'