如何在Pandas中基于分组求和为DataFrame新增列?
解决方案
要给原DataFrame新增每个人员的销售总额列,最简单的方法是使用groupby结合transform方法,它会将分组聚合的结果广播到原DataFrame的每一行,保持数据形状一致。
完整实现代码
import pandas as pd df = pd.DataFrame({'Person':['John','David','Mary','John','David','Mary'], 'Sales':[10,15,20,11,12,18], }) # 新增Total列 df['Total'] = df.groupby('Person')['Sales'].transform('sum') print(df)
输出结果
Person Sales Total 0 John 10 21 1 David 15 27 2 Mary 20 38 3 John 11 21 4 David 12 27 5 Mary 18 38
为什么之前的方法不适用?
你之前执行的df.groupby('Person').sum()属于聚合操作,它会将每个分组的结果合并为一行,最终生成一个以Person为索引的新DataFrame,形状和原数据不一致。而transform方法会将分组计算的结果(每个人员的销售总额)映射到该组的每一行记录上,完美匹配原DataFrame的行数和结构。
内容的提问来源于stack exchange,提问作者Pepey
相关产品推荐
相关产品推荐

