Python 3.x 熊猫分组命名聚合
我想将pandas从0.25.3升级到版本1 给定一个数据帧Python 3.x 熊猫分组命名聚合,python-3.x,pandas,Python 3.x,Pandas,我想将pandas从0.25.3升级到版本1 给定一个数据帧 import pandas as pd d = {'group': [1, 2, 2], 'value': [3, 4, 5]} df = pd.DataFrame(data=d) 我应该如何迁移以下groupby aggregation = { "value": { "min": lambda x: x.min(skipna=True), } } grouped = ( df[["gro
import pandas as pd
d = {'group': [1, 2, 2], 'value': [3, 4, 5]}
df = pd.DataFrame(data=d)
我应该如何迁移以下groupby
aggregation = {
"value": {
"min": lambda x: x.min(skipna=True),
}
}
grouped = (
df[["group", "value"]]
.groupby(["group"], as_index=False)
.agg(aggregation)
)
这无法按预期工作,因为缺少组列。请参阅grouped.columns的输出
多索引([(‘组’,“”),
(‘值’、‘最小’)],
)
vs
索引(['min'],dtype='object')
我找到的唯一解决方案是也包括组
列。似乎因为_index=False
不再起作用了
grouped = (
df[["group", "value"]]
.groupby(["group"], as_index=True)
.agg(
group=NamedAgg(column='group', aggfunc=lambda x: x.iloc[0]),
min=pd.NamedAgg(column='value', aggfunc='min')
)
)
这是熊猫1.0中的一个bug。我提出了这个问题。
升级到pandas 1.1,您的代码将开始工作。
不升级的最简单修复方法是分离聚合和重命名
aggregation = {
"value": lambda x: x.min(skipna=True),
}
grouped = (
df[["group", "value"]]
.groupby(["group"], as_index=False)
.agg(aggregation)
)
grouped.rename(columns={'value':'min'}, inplace=True)
aggregation = {
"value": lambda x: x.min(skipna=True),
}
grouped = (
df[["group", "value"]]
.groupby(["group"], as_index=False)
.agg(aggregation)
)
grouped.rename(columns={'value':'min'}, inplace=True)