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

如何让DataFrame.rolling(3).sum()包含下方行而非上方行

实现向后滚动求和(当前行及下方行)

这个问题很常见——默认的rolling()方法是向前计算窗口(包含当前行及之前的行),而你需要的是向后窗口(当前行及之后的行)。别担心,我们可以通过反转数据的方式轻松实现:

解决方案代码

# 反转AccXCorrected列,执行滚动求和后再反转回原顺序
df_ts['XCorSum'] = df_ts['AccXCorrected'][::-1].rolling(3, min_periods=1).sum()[::-1]

原理说明

  1. 先反转AccXCorrected列的顺序,把原来的“向后窗口”转换成默认的“向前窗口”;
  2. 用rolling(3, min_periods=1).sum()计算反转后的向前滚动求和;
  3. 最后再把结果反转回来,就得到了原数据中当前行及之后2行的滚动求和。

验证你的示例数据

假设你的df_ts初始数据是:

AccXCorrected
0
1
2
3
4
5

运行上述代码后,XCorSum列会完全符合你的预期:

AccXCorrectedXCorSum
03
16
29
312
49
55

如果你的需求是完全不包含当前行,仅取下方的行,可以结合shift()调整逻辑,但根据你的预期结果,上面的代码已经完全匹配需求了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:31:42