假设我有一个带有分层索引的数据框:
>>> 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]
答案 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
或者最简单的方法是重新创建并设置一个新索引(对于所有列)。