如何在多索引列上使用Pandas重命名()?

时间:2018-11-27 13:13:40

标签: pandas rename multi-index

如何使用rename()函数从熊猫DataFrame中简单地重命名MultiIndex列?

让我们看一个示例并创建一个这样的DataFrame:

DATABASE_URL

我可以使用元组作为名称来选择给定的MultiIndex列:

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

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

但是,当使用与named()函数相同的元组命名时,似乎不被接受:

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

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

有什么想法应该调用rename()处理多索引列吗?

PS:我之前知道其他用于平整列名的选项,但这会阻止单行,因此我正在寻找更清洁的解决方案(请参见my previous question

1 个答案:

答案 0 :(得分:0)

这不能回答措辞上的问题,但可以在给定的示例中使用(假设您希望它们全部重命名而没有MultiIndex):

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

   renamed  B_max  C_mean
A                        
1        0      2     1.0
2        3      4     3.5

有关更多信息,您可以看到pandas docs和一些related other questions