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

如何用Pandas rolling函数实现向后3个索引的滚动求和?

Pandas实现后续3个索引的滚动求和技巧

当然有啦!其实用Pandas的rolling函数结合一点小技巧就能轻松实现这种向前滚动求和(也就是对后续3个索引的数值求和)的需求,我给你两种实用的方法:

方法1:反转数组后滚动求和

这个方法的核心是通过反转Series,把“后续3个元素”的需求转换成常规的“前3个元素”滚动求和,之后再反转回来即可:

import pandas as pd
import numpy as np

s = pd.Series([0,1,2,3,4])
# 反转Series → 滚动求和 → 再次反转还原顺序
result = s[::-1].rolling(3).sum()[::-1]

执行后得到的结果就是:

0    3.0
1    6.0
2    9.0
3    NaN
4    NaN
dtype: float64

完全符合你想要的[3, 6, 9, NaN, NaN]的效果。

方法2:利用shift函数调整结果位置

另一种更直接的思路是先计算常规的滚动求和,再通过shift函数把结果向前移动对应的位数:

import pandas as pd
import numpy as np

s = pd.Series([0,1,2,3,4])
# 先计算窗口为3的常规滚动求和
rolling_sum = s.rolling(3).sum()
# 向前移动(窗口大小-1)位,末尾补NaN
result = rolling_sum.shift(-2)

这里窗口大小是3,所以需要shift(-2),这样原本的[NaN, NaN, 3, 6, 9]就会被调整为目标结果。

两种方法都很高效,数据量较大时性能差异也可以忽略,你可以根据自己的习惯选择~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:33:21