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

带movement分组条件的pandas rolling滚动求和实现问题求助

解决方法

你需要先按movement字段分组隔离不同方向的数据集,再在每个分组内独立执行滚动计算,即可避免跨分组数值累加的问题,参考代码如下:

import pandas as pd

# 假设你的原始数据存储在DataFrame变量df中
df['rolling value'] = df.groupby('movement', group_keys=False)['value'].apply(
    lambda s: s.rolling(4).sum().shift(-3)
)

说明

  • groupby('movement')会将所有right和Left的数据拆分为两个独立分组,滚动计算只会在分组内执行,不会把不同方向的数值纳入同一个窗口
  • group_keys=False参数可以避免分组后生成多余的索引层级,计算结果可以直接匹配原表的行顺序
  • 每个分组内不足4个有效数据的位置会自动返回NaN,和你期望的输出结果完全一致

如果之前用groupby报错,大概率是直接对groupby对象链式调用rolling和shift的写法存在版本兼容问题,上述用apply包裹计算逻辑的写法适配pandas 1.0及以上所有版本,不会出现报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 02:36:03