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

如何用Polars计算日内基于最近20条记录的Close列滚动平均

Polars实现每日滚动20期Close均值

要在Polars中实现按日期分组、仅使用当日数据计算Close列的最近20条记录滚动平均(每日前19条为NA),可以利用窗口函数+滚动计算的组合,确保分组内的时序正确性且不跨日计算。

实现代码

ohlc = ohlc.with_columns(
    pl.col("Close")
    .rolling_mean(window=20)
    .over(partition_by="Date", order_by="DateTime")
    .alias("MA")
)

代码说明

  1. partition_by="Date":将数据按日期分组,确保滚动计算严格限制在当日范围内,不会混入前一日的数据。
  2. order_by="DateTime":在每个日期分组内按时间戳排序,保证滚动窗口按 chronological 顺序计算(这一步至关重要,原始数据可能并非按日内时间排序)。
  3. rolling_mean(window=20):计算当前行及之前19行的平均值(共20条记录)。默认min_periods=20,因此每日前19条记录会返回NA,符合需求。
  4. alias("MA"):将计算结果命名为新列MA,同时保留所有原有字段。

与Pandas实现的对比

该Polars代码逻辑完全对应你提供的Pandas实现:

  • Pandas通过groupby(['Date'])['Close'].rolling(window).mean()实现分组滚动平均,再通过reset_index合并回原DataFrame。
  • Polars通过over(partition_by="Date", order_by="DateTime")替代分组+重置索引的流程,代码更简洁且性能更优(Polars窗口函数为向量化实现)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 14:25:58