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

使用Pandas GroupBy计算高成交量日均值返回NaN问题排查

问题分析与解决

问题原因

你遇到的NaN问题有两个核心原因:

  1. 索引不匹配:df.groupby('symbol')['volume'].mean()的结果是以symbol(ABC、AAA)为索引的Series,而high_volume_days的索引是原DataFrame的行号(0、4、5),Pandas无法自动对齐两者的索引,因此填充NaN。
  2. 需求匹配错误:你的期望输出需要的是截至当前行,该symbol在高成交量交易日中的累计成交量均值,但原代码用了整个原始DataFrame的分组均值,既不符合需求,也无法正确赋值。

解决方法

使用groupby结合expanding().mean()计算组内滚动累计均值,同时重置索引确保与high_volume_days对齐:

# 计算截至当前行的组内累计成交量均值
high_volume_days['avg_volume_prior_days'] = high_volume_days.groupby('symbol')['volume'].expanding().mean().reset_index(level=0, drop=True)

代码解释

  • expanding().mean():对每个symbol分组,计算从组内第一行到当前行的成交量均值,完全匹配你的期望输出逻辑。
  • reset_index(level=0, drop=True):移除groupby生成的symbol层级索引,让结果的索引与high_volume_days保持一致,确保赋值时能正确对齐。

验证结果

运行上述代码后,输出将与你的期望完全一致:

date symbol  change    volume  previous_high_volume_day  avg_volume_prior_days
0  2022-01-01    ABC      20  20000000                       NaN                20000000.0
4  2022-01-05    AAA      50  40000000                       NaN                40000000.0
5  2022-01-06    AAA     100  60000000                40000000.0                50000000.0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 04:45:42