Python 在Pandas中结合CustomBusinessDay和BusinessHour课程

Python 在Pandas中结合CustomBusinessDay和BusinessHour课程,python,datetime,pandas,Python,Datetime,Pandas,我最近开始使用Pandas,并发现and类在处理日历数学时非常有用,同时考虑到特定的业务规则。然而,我想知道是否有可能将它们结合起来计算出这两个类的时间增量 例如,我希望在开始时间中添加n个营业时间,并让它跳过BusinessHour类定义的“休息时间”,以及CustomBusinessDay类定义的“休息日”中的所有时间 对该库有更多经验的人是否知道这是否容易实现,或者,如果不知道,对如何将此功能封装到另一个类中有什么建议?从0.18.1版开始,您可以使用: CustomBusinessHou

我最近开始使用Pandas,并发现and类在处理日历数学时非常有用,同时考虑到特定的业务规则。然而,我想知道是否有可能将它们结合起来计算出这两个类的时间增量

例如,我希望在开始时间中添加n个营业时间,并让它跳过BusinessHour类定义的“休息时间”,以及CustomBusinessDay类定义的“休息日”中的所有时间


对该库有更多经验的人是否知道这是否容易实现,或者,如果不知道,对如何将此功能封装到另一个类中有什么建议?

从0.18.1版开始,您可以使用:

CustomBusinessHour是BusinessHour和BusinessHour的混合体 CustomBusinessDay,允许您指定任意假日。对于 详情见()

我正在使用的一个例子是

from pandas.tseries.offsets import CustomBusinessHour
from pandas.tseries.holiday import Holiday, AbstractHolidayCalendar

class MyCalendar(AbstractHolidayCalendar):
    rules = [Holiday('my birthday', month=6, day=6)]

cbh = CustomBusinessHour(2, start='10:00', end='16:00', calendar=MyCalendar())

pd.date_range('20170602', periods=20, freq=cbh)

Out: 
DatetimeIndex(['2017-06-02 10:00:00', '2017-06-02 12:00:00',
               '2017-06-02 14:00:00', '2017-06-05 10:00:00',
               '2017-06-05 12:00:00', '2017-06-05 14:00:00',
               '2017-06-07 10:00:00', '2017-06-07 12:00:00',
               '2017-06-07 14:00:00', '2017-06-08 10:00:00',
               '2017-06-08 12:00:00', '2017-06-08 14:00:00',
               '2017-06-09 10:00:00', '2017-06-09 12:00:00',
               '2017-06-09 14:00:00', '2017-06-12 10:00:00',
               '2017-06-12 12:00:00'],
              dtype='datetime64[ns]', freq='2CBH')

@樵夫,你能详细说明一下吗?我在帖子中链接到了那个doc页面,但我没有看到任何地方表明这两个类可以一起使用。
from pandas.tseries.offsets import CustomBusinessHour
from pandas.tseries.holiday import Holiday, AbstractHolidayCalendar

class MyCalendar(AbstractHolidayCalendar):
    rules = [Holiday('my birthday', month=6, day=6)]

cbh = CustomBusinessHour(2, start='10:00', end='16:00', calendar=MyCalendar())

pd.date_range('20170602', periods=20, freq=cbh)

Out: 
DatetimeIndex(['2017-06-02 10:00:00', '2017-06-02 12:00:00',
               '2017-06-02 14:00:00', '2017-06-05 10:00:00',
               '2017-06-05 12:00:00', '2017-06-05 14:00:00',
               '2017-06-07 10:00:00', '2017-06-07 12:00:00',
               '2017-06-07 14:00:00', '2017-06-08 10:00:00',
               '2017-06-08 12:00:00', '2017-06-08 14:00:00',
               '2017-06-09 10:00:00', '2017-06-09 12:00:00',
               '2017-06-09 14:00:00', '2017-06-12 10:00:00',
               '2017-06-12 12:00:00'],
              dtype='datetime64[ns]', freq='2CBH')