熊猫-根据第一级标头的名称重命名数据框多级标头

时间:2019-02-14 14:51:46

标签: python pandas

我有一个像这样的数据框:

    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

2 个答案:

答案 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)

还是不太方便。