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

如何在Polars中动态创建字段?新增多列lag偏移列的最优方法是什么

Polars 动态创建偏移列最优方案

Polars 中动态生成多列的最优实现是批量构造表达式一次性提交,避免多次调用with_columns产生额外的性能开销,Polars 会自动并行执行所有传入的列生成逻辑,性能远高于逐列添加。

针对你需要生成12个lag偏移列的场景,示例实现如下:

import polars as pl

# 示例测试数据
df = pl.DataFrame({
    "seq": range(30),
    "metric": range(30)
})

# 动态生成lag1到lag12列
lag_count = 12
df_result = df.with_columns(
    [pl.col("metric").shift(lag_step).alias(f"lag{lag_step}") 
     for lag_step in range(1, lag_count + 1)]
)

扩展场景适配

  • 多列同时生成偏移列:如果需要对多个字段生成偏移,只需扩展列表推导逻辑即可
# 对metric、revenue两列各生成12个偏移列
target_cols = ["metric", "revenue"]
df_multi_lag = df.with_columns(
    [pl.col(col).shift(step).alias(f"{col}_lag{step}")
     for col in target_cols
     for step in range(1, 13)]
)
  • 分组偏移:如果需要按分组维度做偏移,追加over方法即可
# 按group_id分组生成偏移列
df_group_lag = df.with_columns(
    [pl.col("metric").shift(step).over("group_id").alias(f"lag{step}")
     for step in range(1, 13)]
)

内容的提问来源于stack exchange,提问作者hakan.t

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 02:45:04