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

Polars按组填充空时间戳:现有方案过慢,求高效优化方法

高效解决Polars按组填充空时间戳问题

问题背景

需要按group分组,用当前组内下一行的start值填充stop列的空值,原实现使用map_groups导致运行速度较慢。

优化方案

直接使用**窗口函数(over)**结合shift(-1)实现向量化填充,避免map_groups带来的Python层面循环开销,代码如下:

# 先按group和start排序,保证组内时间顺序正确
df = df.sort(["group", "start"])

# 用窗口函数实现按组填充
df = df.with_columns(
    pl.col("stop").fill_null(pl.col("start").shift(-1)).over("group")
)

性能提升原因

  • 原方案的map_groups是逐组调用Python lambda函数,属于行级/组级循环操作,数据量大时性能瓶颈明显。
  • 优化后的窗口函数是Polars内部实现的向量化操作,直接在底层批量处理数据,无需切换到Python解释器,性能提升显著。

验证效果

针对示例数据,执行后group=1中第二行的stop空值会被填充为同组下一行的start值:2021-12-08 10:39:12.634873+01:00,完全符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 04:12:48