我正在 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 极坐标中向日期时间添加持续时间
您应该在整个操作过程中调用
.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 │
└────────────┴─────────────────┴──────────────────┘