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

如何在不改变天数的前提下为DatetimeIndex中的日期增加一个月?

问题描述

现有如下代码:

import pandas as pd
idx = pd.DatetimeIndex(["2019-07-15", "2019-08-15", "2019-09-15", "2019-10-15"])
# 输出结果:
# DatetimeIndex(['2019-07-15', '2019-08-15', '2019-09-15', '2019-10-15'], dtype='datetime64[ns]', freq=None)

需要为每个日期增加一个月,同时保留原日期的天数,预期输出如下:

DatetimeIndex(['2019-08-15', '2019-09-15', '2019-10-15', '2019-11-15'], dtype='datetime64[ns]', freq=None)
解决方案

方法1:使用pandas.DateOffset

这是pandas中处理日期偏移最直接的方式,DateOffset(months=1)会精准为每个日期增加一个月,且保留原日期的日分量(前提是目标月份存在该日期):

import pandas as pd
idx = pd.DatetimeIndex(["2019-07-15", "2019-08-15", "2019-09-15", "2019-10-15"])
new_idx = idx + pd.DateOffset(months=1)
print(new_idx)

执行后将得到预期的输出结果。

方法2:结合dateutil.relativedelta

如果需要处理更复杂的日期边界场景(比如闰日、月末日期),可以使用dateutil库的relativedelta,它在特殊日期偏移上的表现更灵活:

import pandas as pd
from dateutil.relativedelta import relativedelta

idx = pd.DatetimeIndex(["2019-07-15", "2019-08-15", "2019-09-15", "2019-10-15"])
new_idx = idx + relativedelta(months=1)
print(new_idx)

该方法同样能满足需求,并且对于像2020-02-29这样的闰日,会自动偏移为2020-03-29,避免日期错误。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 02:57:51