如何用pandas生成自然月起止datetime区间列表(无需手动减秒)
Pandas 自然月时间区间生成实现
不需要手动计算月末偏移、执行减秒操作,可直接利用Pandas内置的月周期属性完成生成,代码简洁无冗余。
import pandas as pd # 直接生成覆盖目标时间范围的所有自然月周期 month_periods = pd.period_range( start="2021-01-01", end="2021-03-31 23:59:59", freq="M" ) # 组合为要求的元组列表格式,截断秒级精度匹配输出要求 interval_list = list(zip( month_periods.start_time, month_periods.end_time.floor("s") ))
输出匹配效果
生成的列表内容完全符合预期:
[ (Timestamp('2021-01-01 00:00:00'), Timestamp('2021-01-31 23:59:59')), (Timestamp('2021-02-01 00:00:00'), Timestamp('2021-02-28 23:59:59')), (Timestamp('2021-03-01 00:00:00'), Timestamp('2021-03-31 23:59:59')) ]
关键特性
- 无冗余计算:月周期的
start_time和end_time是Pandas内置定义的自然月边界,不存在手动减1秒、逐天推算月末这类冗余操作 - 精度适配:
end_time默认值为当月最后一天的23:59:59.999999999,通过.floor('s')截断到秒级即可匹配目标格式,不需要手动计算时间差 - 灵活适配:如果需要保留
Interval类型的输出格式,可基于生成的起止时间调用pd.IntervalIndex生成对应区间,效果完全一致
内容的提问来源于stack exchange,提问作者Eugene Kovalev
相关产品推荐
相关产品推荐

