如何使用 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/