如何重命名多级列?

时间:2018-11-26 08:59:45

标签: pandas multi-level renaming

作为大熊猫has deprecated the on-the-fly renaming of columns in agg(),我正在努力重命名结果列。

import pandas
df = pandas.DataFrame({'A': [1, 1, 1, 2, 2], 'B': range(5), 'C': range(5)})
df2 = df.groupby("A").agg({"B":["min","max"],"C":"mean"})
print(df2)

    B        C
  min max mean
A             
1   0   2  1.0
2   3   4  3.5

我能够像这样访问给定的列:

print(df2[("B","min")])

A
1    0
2    3
Name: (B, min), dtype: int64

但是,当我将rename()函数与这种类型的列标识符一起使用时,它不起作用:

df3 = df2.rename(columns={("B","min"):"renamed"})
print(df3)
    B        C
  min max mean
A             
1   0   2  1.0
2   3   4  3.5

我知道in this post提供的“ hack”功能是先将列名变平,然后使用重命名,但是,这样可以防止任何单线(这就是为什么我将其称为“ hack”)

df.columns = df.columns.map('_'.join)
df3 = df.reset_index().rename(columns={"B_min":"renamed"})

为什么在我的第一个示例中,rename()函数不接受列名作为元组?

0 个答案:

没有答案