我有一个像这样的数据框:
X Y
a b a b
0 1 3 4 2
1 5 7 8 6
我想重命名特定的列名,例如在“ Y”标题下将“ b”重命名为“ b1”。理想的结果是
X Y
a b a b1
0 1 3 4 2
1 5 7 8 6
因此重要的是,“ X”下的标头“ b”保持不变。这意味着我不能只使用rename
答案 0 :(得分:2)
我找不到可以直接这样做的函数
df.columns=df.columns.values
df
Out[110]:
(X, a) (X, b) (Y, a) (Y, b)
0 1 3 4 2
1 5 7 8 6
df.rename(columns={('Y', 'b'):('Y', 'b1')})
Out[111]:
(X, a) (X, b) (Y, a) (Y, b1)
0 1 3 4 2
1 5 7 8 6
df=df.rename(columns={('Y', 'b'):('Y', 'b1')})
df.columns=pd.MultiIndex.from_tuples(df.columns)
df
Out[114]:
X Y
a b a b1
0 1 3 4 2
1 5 7 8 6
答案 1 :(得分:0)
或者,您可以执行以下操作:
# Find index of column to change.
i = df.columns.get_loc(('Y','b'))
# Rename the column.
cols = df.columns.values
cols[i] = ('Y','b1')
df.columns = pd.MultiIndex.from_tuples(cols)
还是不太方便。