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

Polars给日期增减30天未生成新列,请求排查代码错误

Polars日期增减未生成新列问题排查

问题重现

尝试用Polars给日期列增减30天,执行代码无报错,但未生成预期的date_plus_delta和date_minus_delta新列,原代码及输出如下:

原代码

import polars as pl

df = pl.DataFrame(
    {"start_date": ["2020-01-02", "2020-01-03", "2020-01-04"]})

df = df.with_columns(
    pl.col("start_date").str.to_date()
)

# Generate the days above and below
df = df.with_columns(
    pl.col("start_date") + pl.duration(days=30).alias("date_plus_delta")
) 

df = df.with_columns(
    pl.col("start_date") + pl.duration(days=-30).alias("date_minus_delta")
) 

print(df)

原输出

shape: (3, 1)
┌────────────┐
│ start_date │
│ ---        │
│ date       │
╞════════════╡
│ 2020-01-02 │
│ 2020-01-03 │
│ 2020-01-04 │
└────────────┘

问题原因

错误出在alias()的位置:你把alias()加在了pl.duration()对象上,而不是整个日期运算表达式上。这导致Polars仅给duration值命名,未将整个运算结果作为新列添加到DataFrame中。

修正后的代码

import polars as pl

df = pl.DataFrame(
    {"start_date": ["2020-01-02", "2020-01-03", "2020-01-04"]})

df = df.with_columns(
    pl.col("start_date").str.to_date()
)

# 调整alias到整个运算表达式末尾
df = df.with_columns(
    (pl.col("start_date") + pl.duration(days=30)).alias("date_plus_delta")
) 

df = df.with_columns(
    (pl.col("start_date") + pl.duration(days=-30)).alias("date_minus_delta")
) 

print(df)

修正后输出

shape: (3, 3)
┌────────────┬────────────────┬────────────────┐
│ start_date │ date_plus_delta│ date_minus_delta│
│ ---        │ ---            │ ---            │
│ date       │ date           │ date           │
╞════════════╪════════════════╪════════════════╡
│ 2020-01-02 │ 2020-02-01     │ 2019-12-03     │
│ 2020-01-03 │ 2020-02-02     │ 2019-12-04     │
│ 2020-01-04 │ 2020-02-03     │ 2019-12-05     │
└────────────┴────────────────┴────────────────┘

额外优化建议

可以合并多次with_columns调用,提升代码简洁性:

df = df.with_columns(
    (pl.col("start_date") + pl.duration(days=30)).alias("date_plus_delta"),
    (pl.col("start_date") + pl.duration(days=-30)).alias("date_minus_delta")
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 05:35:40