如何在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
相关产品推荐
相关产品推荐

