如何在多索引列上使用 pandas rename()?
Posted
技术标签:
【中文标题】如何在多索引列上使用 pandas rename()?【英文标题】:How to use pandas rename() on multi-index columns? 【发布时间】:2019-04-29 05:54:29 【问题描述】:如何使用 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)
【问题讨论】:
看来***.com/questions/41221079/… 回答了这个问题 【参考方案1】:这并不能按措辞回答问题,但它适用于您给定的示例(假设您希望它们全部重命名而没有 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 rename()?的主要内容,如果未能解决你的问题,请参考以下文章