pandas - 如何在多索引列上使用 pandas rename()?

标签 pandas rename multi-index

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

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

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

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

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

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

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

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

知道应该如何调用 rename() 来处理多索引列吗?

PS:我知道之前有其他选项可以展平列名称,但这可以防止单行,所以我正在寻找更清洁的解决方案(参见 my previous question)

最佳答案

这并没有回答问题的措辞,但它适用于您给定的示例(假设您希望它们全部重命名且没有 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 .

关于pandas - 如何在多索引列上使用 pandas rename()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53500561/

相关文章:

python - 使用元组键从字典创建 MultiIndex pandas DataFrame

Python 多索引函数,在分割列中保留顺序或其他可能的解决方案

python - Pandas - 迭代数据框行并更新 df(一行代码)

python - 如何划分两个DataFrame

Python Pandas - 问题附加/连接两个多索引数据帧

php - 使用 php 不同地重命名每个选定的文件

ios - Xcode:如何在不丢失对目标的所有引用的情况下轻松重命名所有文件扩展名而不一一重命名?

java - 哪些重构工具可以重命名 Java 类及其所有同名实例?

python - 多索引数据框中的多行选择

python - 使用 loc 对 Pandas DataFrame 进行选择性操作,而不覆盖未选定的行