Pandas 带有假日日历的熊猫中的日期偏移

Pandas 带有假日日历的熊猫中的日期偏移,pandas,Pandas,Pandas当前允许您将工作日添加到给定日期datetime.today()+3*BDay()。我想扩展工作日的概念,将给定的假日和周末日期索引排除在外。是否可以将DateIndex合并到偏移量中?目前,我认为您需要创建一个自定义子类。您需要覆盖apply和onOffset方法来考虑您的假日日历 不过,我们应该在business-X中添加一个可选的假日日历参数。我发布了一期github来跟踪它:CustomBusinessDay类现在已经被合并到即将发布的Pandas 0.12版本中,您可以执行

Pandas当前允许您将工作日添加到给定日期
datetime.today()+3*BDay()
。我想扩展工作日的概念,将给定的假日和周末日期索引排除在外。是否可以将DateIndex合并到偏移量中?

目前,我认为您需要创建一个自定义子类。您需要覆盖
apply
onOffset
方法来考虑您的假日日历


不过,我们应该在business-X中添加一个可选的假日日历参数。我发布了一期github来跟踪它:

CustomBusinessDay类现在已经被合并到即将发布的Pandas 0.12版本中,您可以执行以下操作:

>>> from pandas.tseries.offsets import CustomBusinessDay
>>> 
>>> # As an interesting example, let's look at Egypt where
>>> # a Friday-Saturday weekend is observed.
>>> weekmask_egypt = 'Sun Mon Tue Wed Thu'
>>> 
>>> # They also observe International Workers' Day so let's
>>> # add that as a holiday for a couple of years
>>> holidays = ['2012-05-01', datetime(2013, 5, 1), np.datetime64('2014-05-01')]
>>> 
>>> bday_egypt = CustomBusinessDay(holidays=holidays, weekmask=weekmask_egypt)
>>> dt = datetime(2013, 4, 30)
>>> print dt + 2 * bday_egypt
2013-05-05 00:00:00
>>> 
>>> dts = date_range(dt, periods=5, freq=bday_egypt).to_series()
>>> print dts
2013-04-30   2013-04-30 00:00:00
2013-05-02   2013-05-02 00:00:00
2013-05-05   2013-05-05 00:00:00
2013-05-06   2013-05-06 00:00:00
2013-05-07   2013-05-07 00:00:00
Freq: C, dtype: datetime64[ns]
>>> 
>>> print Series(dts.weekday, dts).map(Series('Mon Tue Wed Thu Fri Sat Sun'.split()))
2013-04-30    Tue
2013-05-02    Thu
2013-05-05    Sun
2013-05-06    Mon
2013-05-07    Tue
dtype: object

HTH

如果针对所有补偿而不仅仅是工作日,我可以看到该功能更有用。剩下的不多了,但仍有一些地方认为星期六是一个营业日。因此,在这种情况下,排除星期天和给定假日的内容是必要的。@rhaskett我在Github上为这个问题提供了一些代码。看看它是否符合你的需要。numpy的巧妙使用。当它投入生产时,我会试一试。谢谢你。我每天都在使用它,除了在绘图方面没有其他问题,下面的解决方法通常会起作用:
custom_series.asfreq('B',method='pad').plot()