如何新增列并按指定列分组?及分组求和的Pandas实操疑问
解决Pandas分组求和的问题
嘿,我来帮你搞定这个分组求和的小问题!你之前的代码之所以没得到预期结果,还出现了奇怪的额外列,核心原因是分组的列指定错了——你把Paid和Week都放进groupby()里了,这会让Pandas按「Paid值+Week值」的组合来分组,而不是你想要的只按Week分组。
正确的实现步骤
我们拿你给出的示例DataFrame来演示:
import pandas as pd # 构造示例数据 df = pd.DataFrame({ 'Paid': [5, 2, 7, 7], 'Week': [1, 1, 2, 2] })
要实现「按Week分组,计算Paid的总和」,只需要两步:
- 仅按
Week列分组,同时指定要聚合的目标列是Paid - 重置索引,让Week从分组索引变回普通列(保证输出格式和你期望的一致)
对应的代码如下:
# 分组求和并重置索引 result = df.groupby('Week')['Paid'].sum().reset_index() # 调整列的顺序(和你的期望输出一致,可选) result = result[['Paid', 'Week']] print(result)
运行结果
Paid Week 0 7 1 1 14 2
为什么之前的代码出错?
你之前写的df.groupby(['Paid','Week']).sum()会对**每一组(Paid值, Week值)**进行求和,而且会自动对所有数值列执行聚合操作——如果你的原始DataFrame里还有其他隐藏的数值列,就会出现那些奇怪的额外输出。而我们指定groupby('Week')['Paid']后,只会对Paid列按Week分组求和,完全避免了多余列的干扰。
内容的提问来源于stack exchange,提问作者superwelling
相关产品推荐
相关产品推荐

