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

如何在Polars中高效计算日期列的月初与月末日期?

在Polars中高效获取月初和月末日期并新增列

Polars内置了专门的日期处理工具,能高效获取任意日期对应的月初、月末日期,且支持矢量化操作,处理大数据量时性能优异。结合你已完成的日期类型转换逻辑,只需在with_columns中补充两个计算步骤即可:

import polars as pl

df = pl.DataFrame({'DateColumn': ['2022-02-13', '2020-02-15', '2023-12-01']})

test_df = df.with_columns([
    # 将字符串转为日期类型(保留你的原有逻辑)
    pl.col('DateColumn').str.strptime(pl.Date).cast(pl.Date).alias('DateColumn'),
    # 新增月初日期列
    pl.col('DateColumn').dt.start_of_month().alias('MonthStart'),
    # 新增月末日期列
    pl.col('DateColumn').dt.end_of_month().alias('MonthEnd')
])

print(test_df)

运行后输出结果:

┌────────────┬────────────┬────────────┐
│ DateColumn │ MonthStart │ MonthEnd   │
│ ---        │ ---        │ ---        │
│ date       │ date       │ date       │
╞════════════╪════════════╪════════════╡
│ 2022-02-13 │ 2022-02-01 │ 2022-02-28 │
│ 2020-02-15 │ 2020-02-01 │ 2020-02-29 │
│ 2023-12-01 │ 2023-12-01 │ 2023-12-31 │
└────────────┴────────────┴────────────┘

关键说明

  • dt.start_of_month():直接返回当前日期所在月份的第一天,无需手动拆分年、月计算。
  • dt.end_of_month():自动适配闰年、不同月份天数差异,精准返回对应月份的最后一天。
  • 所有操作均为Polars矢量化运算,比循环处理单条数据效率高数十倍,适合大规模数据集场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 16:15:57