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

如何让Pandas仅计算最后M个数据点的滚动均值?

解决方案

核心思路

滚动计算最后M行的均值时,每个窗口最多需要往前追溯lookback-1行数据。因此只需提取原DataFrame的最后M + lookback - 1行,在这个子集上执行滚动均值计算,最后截取结果的最后M行即可。这样只会处理少量数据,避免遍历全部10亿行。

Pandas 实现代码

# 提取需要的子集:最后M + lookback -1行
subset_df = df.tail(M + lookback - 1)
# 计算滚动均值
rolling_result = subset_df.rolling(window=lookback).mean()
# 只保留最后M行的结果
final_result = rolling_result.tail(M)

为什么这能节省时间?

  • 原操作需要对N行逐行计算,时间复杂度为O(N);优化后仅处理M + lookback -1行,时间复杂度降至O(M)(M远小于N)。
  • Pandas的rolling内部是优化过的C实现,比自行编写Python循环效率高得多,完全满足你不想手写滚动函数的需求。

注意事项

  • 如果lookback大于M,比如M=5、lookback=10,那么M + lookback -1 =14,提取最后14行后计算滚动均值,结果的前lookback-1行会是NaN,最后M行就是你需要的有效结果。
  • 若原DataFrame是按时间排序的,确保tail()取到的是正确的最后M行数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 01:50:38