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

如何在Python Polars中计算今日与DataFrame日期字段的月份差?

计算Polars DataFrame日期与当前日期的月份差

有两种常用方法,可根据你的需求选择:

方法1:用Polars内置的dt.month_diff()(推荐)

这个方法会计算两个日期之间的完整月份数(会考虑日部分,只有当前日期的日≥目标日期的日时,才算满一个月),代码示例:

import polars as pl

# 构造示例数据
df = pl.DataFrame({
    "mydate": ["2022-01-15", "2023-05-20", "2021-09-01"]
}).with_columns(pl.col("mydate").str.to_date())

# 计算月份差,用Polars的当前时间函数更兼容
df = df.with_columns(
    pl.col("mydate").dt.month_diff(pl.datetime.now()).alias("month_diff")
)

print(df)

如果你的mydate是带时区的日期类型,记得确保pl.datetime.now()也使用对应时区(比如pl.datetime.now("UTC")),避免时区不匹配报错。

方法2:手动计算年月差(忽略日部分)

如果不需要考虑日的影响,只想按年和月的差值直接计算(比如2023-05-31到2024-03-01,直接算10个月),可以手动计算:

df = df.with_columns(
    (
        (pl.datetime.now().year - pl.col("mydate").dt.year) * 12
        + (pl.datetime.now().month - pl.col("mydate").dt.month)
    ).alias("month_diff_ignore_day")
)

两种方法的区别

  • dt.month_diff():计算完整经过的月份,比如2023-05-20到2024-03-10,因为10号<20号,所以只算9个完整月份。
  • 手动计算:只看年月的差值,不管日,上面的例子会得到10个月。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 18:22:09