2017-06-19 86 views
1

我有一个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 
+0

你是如何得到它的?通过'pivot_table'? – jezrael

回答

2

我认为你可以使用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_tablesolution得到它被删除[]或添加参数values='c'如果失踪。

+0

再次感谢您的帮助!您的解决方案非常好 – HappyPy

+0

很高兴能帮到你,一天! – jezrael