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

如何在Polars中实现Pandas的30分钟重采样聚合逻辑?

Polars复刻Pandas重采样聚合的正确实现

目标Pandas代码

你想要复刻的Pandas重采样聚合逻辑如下:

AGG_DEFAULTS = {
    'open': 'first',
    'high': 'max',
    'low': 'min',
    'close': 'last',
    'volume': 'sum',
    'transactions': 'sum',
}

df = df.resample('30min').agg(AGG_DEFAULTS).dropna()

原Polars代码的问题

你之前写的代码错误地使用了upsample + group_by的组合:upsample的作用是填充时间序列中的缺失时间点,而非按窗口聚合;后续的group_by("time")是按单个时间点分组,而非30分钟的时间窗口,因此只会取每个时间点的第一行值,无法实现窗口内的聚合。

正确的Polars实现

Polars原生支持resample方法,逻辑和Pandas完全对齐,直接用它就能实现需求:

import polars as pl

AGG_DEFAULTS = {
    'open': pl.first(),
    'high': pl.max(),
    'low': pl.min(),
    'close': pl.last(),
    'volume': pl.sum(),
    'transactions': pl.sum(),
}

result = df.resample(time_column="time", every="30m").agg(AGG_DEFAULTS).drop_nulls()

关键说明

  • 直接使用resample指定时间列和采样频率,无需额外的upsample或group_by操作
  • 聚合字典中直接使用Polars的聚合函数,键名对应原列名,无需手动设置别名
  • drop_nulls()对应Pandas的dropna(),用于移除无数据的采样窗口

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 16:02:36