You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python DataFrame中对value列执行迭代累加求和操作

实现DataFrame中当前行及后续行的value反向累加求和

嘿,我刚好碰到过类似的需求,给你分享几个简单高效的实现方法!

首先先明确下我们的初始数据:

tvalue
510
40
32
20
11

我们要新增一个sum列,每行的sum值是当前行以及之后所有行的value之和,最终得到目标结果:

tvaluesum
51013
403
323
201
111

方法一:用cumsum()结合序列反转

这是最简洁的实现方式,核心思路是把value列倒过来做正向累加,再把结果倒回去,就刚好得到我们需要的反向累加和:

import pandas as pd

# 创建初始DataFrame
df = pd.DataFrame({
    't': [5, 4, 3, 2, 1],
    'value': [10, 0, 2, 0, 1]
})

# 生成sum列:反转value→累加→再反转回来
df['sum'] = df['value'][::-1].cumsum()[::-1]

执行完这段代码后,打印df就能得到目标结果啦!

方法二:用expanding().sum()实现

和上面的思路完全一致,只是换用expanding()来做累加(对于一维序列来说,expanding().sum()和cumsum()的效果是完全相同的):

df['sum'] = df['value'].iloc[::-1].expanding().sum().iloc[::-1]

补充说明:如果t列不是倒序的情况

如果你的原始数据t列不是从大到小排列的,建议先按t降序排序,做完累加后再恢复原顺序(如果需要的话):

# 先按t降序排序,保留原索引
df_sorted = df.sort_values('t', ascending=False).copy()
# 生成sum列
df_sorted['sum'] = df_sorted['value'][::-1].cumsum()[::-1]
# 恢复原顺序
df = df_sorted.sort_index()

这样不管原始数据的顺序如何,都能准确计算每行及后续行的累加和~

内容的提问来源于stack exchange,提问作者Pablo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 07:45:17