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

pandas执行rolling滚动窗口操作DataFrame无效果全返回NaN问题求助

问题原因

  • 多余的循环逻辑错误:你写的for i in full_df:会遍历DataFrame的所有列(该数据集有1200+列,对应5年的交易日),每次循环都会对整个DataFrame执行一次滚动窗口平均,相当于连续做了1200多次窗口为5的滚动计算。每做一次滚动平均就会多4个NaN值,累计下来前4800个位置全是NaN,你取前2000行当然全是空值。
  • 滚动方向设置错误:pandas的rolling方法默认axis=0,也就是沿着列的方向纵向计算,你需要对行执行滚动计算的话,必须指定axis=1沿横向计算。

修正后的代码

import pandas as pd

df = pd.read_csv('all_stocks_5yr.csv', usecols=["date", "close", "Name"])

gp = df.groupby("Name")
my_dict = {key: group['close'].to_numpy() for key, group in gp}

full_df = pd.DataFrame.from_dict(my_dict, orient='index')
# 去掉多余循环,指定沿行维度做滚动窗口平均
full_df = full_df.rolling(window=5, axis=1).mean()
# 验证结果:每一行前4列为NaN,第5列开始就有正常计算结果
print(full_df.iloc[:, :10].head())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 14:15:04