Python pandas DataFrame如何逐行累计求和并新增结果列
Pandas逐行累计求和实现方案
你需要的逐行累加当前行及之前行quantity值的需求,不需要手写循环,直接用pandas内置的累计求和方法cumsum()即可实现,自动适配任意行数,不需要硬编码判断阈值。
实现代码
# 基于你已有的DataFrame,直接追加累计和列 df['sum'] = df['quantity'].cumsum()
运行后输出的结果完全匹配你的预期:
id index_num quantity sum 0 001 0 10 10 1 002 1 10 20 2 003 2 10 30 3 004 3 10 40 4 005 4 10 50
原代码问题说明
- 你写的循环中判断条件硬编码为
<4,每次循环执行的都是df.loc[df['index_num'] < 4, 'quantity'].sum(),计算的是固定范围的总和,没有随当前遍历的行动态调整统计范围,所以无法得到逐行累计的效果 - 手写循环处理DataFrame效率远低于pandas内置的向量化运算,这类逐行统计的通用需求pandas都有对应内置方法,不需要自行实现循环逻辑
扩展场景
如果后续需要按指定字段分组后,在每个分组内部做累计求和,可以搭配groupby使用:
# 示例:按分类字段category分组,组内逐行累计quantity df['group_cum_sum'] = df.groupby('category')['quantity'].cumsum()
内容的提问来源于stack exchange,提问作者Hannah
相关产品推荐
相关产品推荐

