gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 07:28:15 27 4
gpt4 key购买 nike

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

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com