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

如何用Python实现DataFrame列值减去前1000个值的滚动均值?

实现DataFrame列值减去前1000个值的均值

你可以用pandas的rolling方法来实现这个需求,核心是计算当前行之前1000个值的滚动均值,再用原列值减去该均值。

基础实现(严格前1000个值)

# 计算前1000个值的滚动均值,不包含当前行
rolling_mean = df['x'].rolling(window=1000, closed='left').mean()

# 更新x列
df['x'] = df['x'] - rolling_mean
  • window=1000:指定每次计算均值的窗口大小为1000行
  • closed='left':确保窗口仅包含当前行之前的1000行数据,不包含当前行本身,完全符合你“前1000个值”的要求

处理前999行的NaN问题

上面的代码中,前999行因为没有足够的前1000个数据,rolling_mean会返回NaN,导致df['x']对应位置也变成NaN。你可以根据需求选择处理方式:

  1. 保留前999行的原始值
df['x'] = df['x'] - rolling_mean.fillna(df['x'])
  1. 前999行取已有前n个值的均值
    如果希望第i行(i<1000)减去它之前所有值的均值,而不是返回NaN,可以添加min_periods=1参数:
rolling_mean = df['x'].rolling(window=1000, closed='left', min_periods=1).mean()
df['x'] = df['x'] - rolling_mean

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 00:33:23