熊猫:创建日期范围

时间:2020-07-30 10:02:11

标签: python pandas date

我想在Pandas中创建一个考虑工作日的每月日期范围。

例如:dt_range = pd.date_range(start='2017-12-20', periods=5, freq='M')

含义:从2017年12月20日开始,每20日滚动一次,为期5个月,如果该滚动日期不是工作日,则采用下一个滚动日期(但保留20日以进行下一次观察)。

与之类似:以日期结尾,向后滚动,每20天一次,持续5个月。 例如:

dt_range = pd.date_range(end='2018-05-20', periods=5, freq='M')

我一直在咨询Pandas offset aliases,但由于他们专注于月末,月初,所以我的思维方式似乎与他们不同步,而且我找不到简单的月度记录。这有点信息过载,我相信这是一种简单的方法,因此,我想寻求帮助/指导以找到答案。

1 个答案:

答案 0 :(得分:1)

一种解决方法:

dt_range = pd.date_range(start='2017-12-20', periods=5, freq='MS') + pd.DateOffset(days=18) + pd.tseries.offsets.BusinessDay(1)

输出:

DatetimeIndex(['2018-01-22', '2018-02-20', '2018-03-20', '2018-04-20',
               '2018-05-21'],
              dtype='datetime64[ns]', freq=None)

我只是带着date_range(.., freq='MS)进入每月的第一天,然后我增加了18天就达到了第19天。然后,按照this SO post所述使用offsets.BusinessDay查找下一个工作日。

如果要包括开始日期,则必须提前一个月开始。这种行为有些奇怪,但很容易解决。