在Pandas中结合CustomBusinessDay和BusinessHour课程

2024-04-29 09:19:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我最近开始使用Pandas,发现CustomBusinessDay BusinessHour类在计算特定业务规则时非常有用。但是,我想知道是否可以将它们组合起来计算同时考虑这两个类的时间增量。在

我想在商务课上加上“上班时间”和“休息时间”。在

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


Tags: 功能pandas规则时间经验业务增量建议
1条回答
网友
1楼 · 发布于 2024-04-29 09:19:39

从版本0.18.1开始,您可以使用^{}

The CustomBusinessHour is a mixture of BusinessHour and CustomBusinessDay which allows you to specify arbitrary holidays. For details, see Custom Business Hour (GH11514)

In [1]: from pandas.tseries.offsets import CustomBusinessHour

In [2]: from pandas.tseries.holiday import USFederalHolidayCalendar

In [3]: bhour_us = CustomBusinessHour(calendar=USFederalHolidayCalendar())
Friday before MLK Day

In [4]: dt = datetime(2014, 1, 17, 15)

In [5]: dt + bhour_us
Out[5]: Timestamp('2014-01-17 16:00:00')
Tuesday after MLK Day (Monday is skipped because it’s a holiday)

In [6]: dt + bhour_us * 2
Out[6]: Timestamp('2014-01-21 09:00:00')

我使用的一个例子是

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')

相关问题 更多 >