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

Pandas groupby结合rolling均值+reset_index返回NaN问题求解

问题原因
  • 分组键选择错误:你当前使用Sessions作为分组字段,从样例数据可以看到该字段是全局自增的唯一值,每个分组下仅包含1条数据,完全无法满足rolling(20)所需的最少20条数据的计算要求,因此返回全空值。
  • 业务逻辑不符合:滚动均值需要按不同标的(Symbol字段)分别计算,同一个标的的历史数据归为一组才符合需求,按Sessions分组的逻辑本身就不匹配你的计算目标。
  • 索引对齐问题:即使分组正确,你当前的写法也可能因为分组后的索引和原DataFrame索引不匹配导致赋值异常。
解决方法

将分组键替换为Symbol,同时确保分组内数据按时间排序,再进行滚动计算,参考代码如下:

# 先按标的分组,每组内部按时间排序后计算20日滚动DR均值
df_day['ADR'] = df_day.groupby('Symbol', group_keys=False).apply(
    lambda x: x.sort_values('Time')['DR'].rolling(20).mean()
)

如果你已经能保证原数据里每个Symbol下的行已经按时间升序排列,可以简化为:

df_day['ADR'] = df_day.groupby('Symbol')['DR'].rolling(20).mean().reset_index(0, drop=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 15:06:03