首页 > 解决方案 > 如何使用 relativedelta 将 DatetimeIndex 移动 x 个月?

问题描述

我的 pandas 数据框中有一个 DatetimeIndex,按季度频率排列,格式化为季度的开头(所以 1 月 1 日、4 月 1 日等等)。我想将其重新格式化为季度末(3 月 31 日、6 月 30 日等)。

我认为最简单的方法是将整个指数移动 3 个月并减去 1 天。减法部分没问题,例如我可以这样做将整个索引向后移动一天

import datetime
from dateutil.relativedelta import * 
df.index - datetime.timedelta(days=1)

问题是如何提前3个月。timedelta在几天和几周内工作,所以不合适。我读到relativedelta它就是这样做的,但它只适用于 datetime 对象,而不适用于 datetimeindex。例如,以下作品

df.index[0] + relativedelta(months=+3)

但不是

df.index + relativedelta(months=+3)

我想我可以遍历 df.index 的每个元素,但肯定有一个优雅的解决方案让我无法理解吗?

标签: pythonpandasdataframe

解决方案


推荐阅读