使用分层列更改Pandas中的列名称

时间:2014-07-23 21:55:48

标签: python pandas

假设我有一个带有分层索引的数据框:

>>> df = pd.DataFrame(np.ones((2, 4)))
>>> df
   0  1  2  3
0  1  1  1  1
1  1  1  1  1

[2 rows x 4 columns]
>>> df.columns = pd.MultiIndex.from_product([['a', 'b'], ['i', 'ii']])
>>> df
   a      b    
   i  ii  i  ii
0  1   1  1   1
1  1   1  1   1

[2 rows x 4 columns]

是否有一种简单的方法可以更改“b”下的列名?我认为以下是直观的,但它不起作用。

>>> df['b'].columns = ['iii', 'iv']
>>> df
   a      b    
   i  ii  i  ii
0  1   1  1   1
1  1   1  1   1

[2 rows x 4 columns]

1 个答案:

答案 0 :(得分:0)

重命名columar多索引是一个有点麻烦的ATM(并重命名它自己不会以一种很好的方式处理多索引)。如果它是框架的索引,则很容易reset_index/rename/set_index

所以有2个选择:(这也会在0.15.0中变得更容易);现在必须设置所有级别,甚至是你没有改变的级别。

In [39]: df.columns = df.columns.set_levels([['iii','iv'],df.columns.levels[1]])

In [40]: df
Out[40]: 
   iii      iv    
     i  ii   i  ii
0    1   1   1   1
1    1   1   1   1

或者最简单的方法是重新创建并设置一个新索引(对于所有列)。