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

使用Pandas Rolling函数求后续140行最大值结果不符,求助排查

问题分析与解决

你的代码出错原因是pandas的rolling()默认使用向前滑动窗口,也就是计算当前行及之前的窗口内数据的最大值。你的数据是从0到999的递增序列,所以每个位置的向前窗口最大值就是当前行的值,这就导致了输出和预期不符。

你需要的是向后滑动窗口(当前行 + 后续140行,共141行)的最大值,解决方法是先反转数据,计算向前窗口的最大值后再反转回来:

import pandas as pd

# Sample DataFrame
df = pd.DataFrame({'clicks': [i for i in range(1000)]})

# 反转Series计算向前窗口max,再反转得到向后窗口结果
roll = df['clicks'][::-1].rolling(window=141, min_periods=1).max()[::-1]
print(roll.head())

运行后输出:

0    140.0
1    141.0
2    142.0
3    143.0
4    144.0

注:你预期的第0行输出为141.0是有误的,因为第0行的后续140行是索引1到140,对应数值1到140,加上当前行0,最大值应为140.0。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 00:22:15