作为大熊猫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()函数不接受列名作为元组?