Polars 在日期中添加天数[重复]

问题描述 投票:0回答:1

我正在 Python 中使用 Polars 尝试为日期添加三十天 我运行代码,没有得到任何错误,但也没有得到新的日期 谁能看到我的错误吗?

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 │
└────────────┘

快速参考

手册:https://docs.pola.rs/user-guide/transformations/time-series/parsing/

strftime 格式: https://docs.rs/chrono/latest/chrono/format/strftime/index.html

SO 上一篇文章的答案: 如何在 Python 极坐标中向日期时间添加持续时间

python datetime duration timedelta python-polars
1个回答
4
投票

您应该在整个操作过程中调用

.alias
pl.col('start_date') + pl.duration(days=30)
。相反,您只是在
pl.duration(days=30)
上使用别名。

所以正确的方法是:

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, 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       │
└────────────┴─────────────────┴──────────────────┘
© www.soinside.com 2019 - 2024. All rights reserved.