如何使用Pandas生成跨两个年份的指定日期间的月度间隔日期序列
跨年度固定日期间隔序列生成方案
可直接运行的实现代码
循环实现(逻辑直观,无特殊日期兼容问题)
from pandas import Timestamp, DateOffset start_ts = Timestamp('2021/11/02') end_ts = Timestamp('2022/03/02') starts = [] current_date = start_ts while current_date < end_ts: starts.append(current_date) current_date += DateOffset(months=1) # ends序列为starts每个元素加1个月 ends = [date + DateOffset(months=1) for date in starts]
向量化实现(适合大数据量场景)
import pandas as pd from pandas import Timestamp start_ts = Timestamp('2021/11/02') end_ts = Timestamp('2022/03/02') # 计算两个日期间的总月数差 month_diff = (end_ts.year - start_ts.year) * 12 + end_ts.month - start_ts.month starts = pd.date_range(start=start_ts, periods=month_diff, freq='MS') + pd.DateOffset(days=start_ts.day -1) ends = starts + pd.DateOffset(months=1)
原有代码问题说明
你之前的代码使用freq='M'(月末频率)生成日期,本身得到的是每月最后一天,再通过加减天数调整的方式,会受不同月份天数差异影响,逻辑不稳定;同时MonthEnd(2)的偏移逻辑不符合固定日生成的需求,所以无法得到预期结果。
内容的提问来源于stack exchange,提问作者Oscar Vardela
相关产品推荐
相关产品推荐

