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

如何在Pandas中基于另一列历史值滚动计算截断均值 无需逐行遍历

实现方法

直接用Pandas内置的滚动窗口rolling配合apply即可实现,完全不需要手动写逐行遍历逻辑,3000行数据运算耗时可以忽略:

import pandas as pd
from scipy import stats

# 先确保表格按Date升序排序,保证历史数据顺序正确
my_table = my_table.sort_values('Date', ascending=True).reset_index(drop=True)

# 构造滚动窗口,核心参数说明:
# window=90:单窗口最多包含90条数据
# min_periods=1:历史数据不足90条时,用现有全部历史计算
# closed='left':窗口不包含当前行,只取当前行之前的历史数据
roll_window = my_table['Amount'].rolling(window=90, min_periods=1, closed='left')

# 对每个窗口应用截断均值计算
my_table['TrimMean'] = roll_window.apply(lambda x: stats.trim_mean(x, 0.1))
验证说明

你可以用样例数据测试计算结果:

  • 第12行的TrimMean值会自动取1-11行的Amount值计算截断均值
  • 第1000行的TrimMean值会自动取910-999行的Amount值计算截断均值
    完全匹配你给出的规则要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 07:30:04