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

Polars:按分组计算窗口大小为2的滚动求和

Polars按分组计算窗口大小为2的滚动求和

原数据

import polars as pl

df = pl.DataFrame({'group': [1, 1, 1, 3, 3, 3, 4, 4], 'value': [1, 4, 2, 5, 3, 4, 2, 3]})

解决方案

要实现按分组计算窗口大小为2的滚动求和,只需结合group_by与rolling_sum方法,同时设置min_periods=1以保留每个分组的首个元素值:

result = df.group_by('group', maintain_order=True).agg(
    pl.col('value').rolling_sum(window_size=2, min_periods=1)
).explode('value')

print(result)

代码说明

  • group_by('group', maintain_order=True):按group列分组,且保持原数据的行顺序,保证输出结果与预期顺序一致。
  • rolling_sum(window_size=2, min_periods=1):对每个分组内的value列执行窗口大小为2的滚动求和,min_periods=1确保当窗口元素不足2个时(如分组的第一个元素),直接返回当前元素,而非空值。
  • explode('value'):将分组聚合得到的列表型结果展开为单行数据,还原成原数据的行数结构。

输出结果

┌───────┐
│ value │
│ ---   │
│ i64   │
╞═══════╡
│ 1     │
│ 5     │
│ 6     │
│ 5     │
│ 8     │
│ 7     │
│ 2     │
│ 5     │
└───────┘

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 10:10:34