如何在Polars中为日期添加月份并生成指定日期范围?
在Polars中生成指定日期的下月首日及12个月后首日
需求说明
给定日期2023-01-15,需要生成两个目标日期:
range_start:下月首日(即2023-02-01)range_end:range_start之后12个月的首日(即2024-02-01)
Python datetime实现(参考)
from datetime import datetime from dateutil import relativedelta my_date = datetime.fromisoformat("2023-01-15") start = my_date.replace(day=1) + relativedelta.relativedelta(months=1) end = start + relativedelta.relativedelta(months=12)
Polars实现方案
Polars通过dt命名空间提供日期时间操作方法,逻辑与datetime版本对齐,写法更简洁:
import polars as pl from datetime import datetime # 定义初始日期 my_date_pl = pl.lit(datetime.fromisoformat("2023-01-15")) # 生成下月首日:先将日期调整到当月1号,再偏移1个月 range_start = my_date_pl.dt.replace(day=1).dt.offset_by("1mo") # 生成12个月后的首日:基于range_start偏移12个月 range_end = range_start.dt.offset_by("12mo") # 查看结果 print("range_start:", range_start.item()) print("range_end:", range_end.item())
代码解释
dt.replace(day=1):将原日期的日部分替换为当月1号dt.offset_by("1mo"):对日期进行月份偏移,1mo代表1个月,12mo代表12个月,Polars会自动处理不同月份的天数差异(如2月的特殊情况).item():从Polars的Literal对象中提取Python datetime格式的结果值,方便直接查看
内容的提问来源于stack exchange,提问作者Esben Eickhardt
相关产品推荐
相关产品推荐

