Pandas如何将groupby分组后的max结果填充到数据框新列中
解决方案
你可以直接使用Pandas的transform方法实现需求,该方法会将分组聚合的结果自动匹配填充到对应分组的所有行,仅需一行代码即可完成:
df['innings_score'] = df.groupby(['season', 'match_id', 'inning'])['sum_total_runs'].transform('max')
说明
transform方法会保留原数据集的行索引,无需额外做索引匹配或表关联操作,执行效率更高- 无论你是否已经提前初始化了默认值为0的
innings_score列,以上代码都可以直接覆盖得到正确值
如果你已经提前计算出了分组聚合后的结果,也可以通过关联的方式实现:
# 假设预计算的分组结果存储在 inning_max 变量中 inning_max = df.groupby(['season', 'match_id', 'inning'])['sum_total_runs'].max().rename('innings_score') # 删除原有空列后关联赋值 df = df.drop(columns=['innings_score']).merge(inning_max, on=['season', 'match_id', 'inning'], how='left')
内容的提问来源于stack exchange,提问作者Faheeem Sajjad
相关产品推荐
相关产品推荐

