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

如何用Pandas date_range生成指定起始日的月度日期序列?

生成指定起始日的月度日期范围

要生成以固定日期(如每月13号)为基准的月度日期序列,你可以用以下几种实用方法:

方法1:基于月初日期偏移

利用MS(每月初)频率生成日期,再偏移12天得到当月13号,同时确保结果不超过结束日期:

import pandas as pd

start = '13/04/2024'
end = '13/06/2024'

# 转换为datetime对象,dayfirst=True适配日/月/年格式
start_dt = pd.to_datetime(start, dayfirst=True)
end_dt = pd.to_datetime(end, dayfirst=True)

# 生成每月初的日期,偏移12天得到当月13号
month_starts = pd.date_range(start=start_dt.replace(day=1), end=end_dt.replace(day=1), freq='MS')
target_dates = month_starts + pd.DateOffset(days=12)

# 过滤超出结束日期的结果
target_dates = target_dates[target_dates <= end_dt]

print(target_dates)

输出:

DatetimeIndex(['2024-04-13', '2024-05-13', '2024-06-13'], dtype='datetime64[ns]', freq=None)

方法2:循环添加月份偏移

直接通过循环给起始日期逐个添加月份偏移,逻辑更直观,适配特殊起始日(如31号)的自动调整:

import pandas as pd

start = '13/04/2024'
end = '13/06/2024'

start_dt = pd.to_datetime(start, dayfirst=True)
end_dt = pd.to_datetime(end, dayfirst=True)

# 计算需要生成的总月份数
total_months = (end_dt.year - start_dt.year) * 12 + (end_dt.month - start_dt.month) + 1

# 逐个生成目标日期
target_dates = pd.DatetimeIndex([start_dt + pd.DateOffset(months=i) for i in range(total_months)])

print(target_dates)

如果起始日是31号这类小月不存在的日期,pandas会自动调整到对应月份的最后一天,适合通用场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 00:30:56