pandas.tseries.offsets.CustomBusinessHour#
- class pandas.tseries.offsets.CustomBusinessHour#
DateOffset 子类表示可能是 n 个自定义工作日的偏移量。
在 CustomBusinessHour 中,我们可以使用自定义的周掩码、假期和日历。
- 参数:
- nint, 默认 1
表示的小时数。
- normalize布尔值, 默认为 False
在生成日期范围之前,将开始/结束日期标准化为午夜。
- weekmaskstr, 默认值 ‘Mon Tue Wed Thu Fri’
有效工作日的周掩码,传递给
numpy.busdaycalendar
。- 假期列表
要从有效工作日集合中排除的日期列表/数组,传递给
numpy.busdaycalendar
。- 日历np.busdaycalendar
日历以进行集成。
- 开始str, time, 或 str/time 的列表, 默认值为 “09:00”
自定义营业时间的开始时间,采用24小时格式。
- 结束str, time, 或 str/time 的列表, 默认: “17:00”
自定义营业时间的结束时间,采用24小时格式。
- offsettimedelta, 默认 timedelta(0)
要应用的时间偏移。
例子
在下面的示例中,默认参数给出了下一个工作时间。
>>> ts = pd.Timestamp(2022, 8, 5, 16) >>> ts + pd.offsets.CustomBusinessHour() Timestamp('2022-08-08 09:00:00')
我们也可以更改营业时间的开始和结束。
>>> ts = pd.Timestamp(2022, 8, 5, 16) >>> ts + pd.offsets.CustomBusinessHour(start="11:00") Timestamp('2022-08-08 11:00:00')
>>> from datetime import time as dt_time >>> ts = pd.Timestamp(2022, 8, 5, 16) >>> ts + pd.offsets.CustomBusinessHour(end=dt_time(19, 0)) Timestamp('2022-08-05 17:00:00')
>>> ts = pd.Timestamp(2022, 8, 5, 22) >>> ts + pd.offsets.CustomBusinessHour(end=dt_time(19, 0)) Timestamp('2022-08-08 10:00:00')
你可以将你的工作时间分成几个部分。
>>> import datetime as dt >>> freq = pd.offsets.CustomBusinessHour(start=["06:00", "10:00", "15:00"], ... end=["08:00", "12:00", "17:00"]) >>> pd.date_range(dt.datetime(2022, 12, 9), dt.datetime(2022, 12, 13), freq=freq) DatetimeIndex(['2022-12-09 06:00:00', '2022-12-09 07:00:00', '2022-12-09 10:00:00', '2022-12-09 11:00:00', '2022-12-09 15:00:00', '2022-12-09 16:00:00', '2022-12-12 06:00:00', '2022-12-12 07:00:00', '2022-12-12 10:00:00', '2022-12-12 11:00:00', '2022-12-12 15:00:00', '2022-12-12 16:00:00'], dtype='datetime64[ns]', freq='cbh')
工作日可以通过
weekmask
参数指定。要将返回的 datetime 对象转换为其字符串表示形式,在下一个示例中使用了 strftime() 函数。>>> import datetime as dt >>> freq = pd.offsets.CustomBusinessHour(weekmask="Mon Wed Fri", ... start="10:00", end="13:00") >>> pd.date_range(dt.datetime(2022, 12, 10), dt.datetime(2022, 12, 18), ... freq=freq).strftime('%a %d %b %Y %H:%M') Index(['Mon 12 Dec 2022 10:00', 'Mon 12 Dec 2022 11:00', 'Mon 12 Dec 2022 12:00', 'Wed 14 Dec 2022 10:00', 'Wed 14 Dec 2022 11:00', 'Wed 14 Dec 2022 12:00', 'Fri 16 Dec 2022 10:00', 'Fri 16 Dec 2022 11:00', 'Fri 16 Dec 2022 12:00'], dtype='object')
使用 NumPy 工作日日历,您可以定义自定义假期。
>>> import datetime as dt >>> bdc = np.busdaycalendar(holidays=['2022-12-12', '2022-12-14']) >>> freq = pd.offsets.CustomBusinessHour(calendar=bdc, start="10:00", end="13:00") >>> pd.date_range(dt.datetime(2022, 12, 10), dt.datetime(2022, 12, 18), freq=freq) DatetimeIndex(['2022-12-13 10:00:00', '2022-12-13 11:00:00', '2022-12-13 12:00:00', '2022-12-15 10:00:00', '2022-12-15 11:00:00', '2022-12-15 12:00:00', '2022-12-16 10:00:00', '2022-12-16 11:00:00', '2022-12-16 12:00:00'], dtype='datetime64[ns]', freq='cbh')
属性
基础
返回调用偏移对象的一个副本,其中 n=1 且所有其他属性相同。
返回一个表示频率的字符串。
返回一个包含偏移额外参数的字典。
返回表示基本频率的字符串。
返回一个整数,表示固定频率的总纳秒数。
next_bday
用于移动到下一个工作日。
偏移量
self._offset 的别名。
返回表示基本频率的字符串。
方法
复制
()返回频率的副本。
is_month_end
(ts)返回布尔值,判断一个时间戳是否发生在月末。
is_month_start
(ts)返回一个布尔值,判断时间戳是否发生在月初。
is_on_offset
(dt)返回布尔值,判断一个时间戳是否与这个频率相交。
is_quarter_end
(ts)返回布尔值,判断一个时间戳是否发生在季度末。
is_quarter_start
(ts)返回布尔值,判断时间戳是否发生在季度开始。
is_year_end
(ts)返回布尔值,判断一个时间戳是否发生在年末。
is_year_start
(ts)返回布尔值,判断一个时间戳是否发生在年初。
回滚
(其他)如果不在偏移上,则将提供的日期向后滚动到下一个偏移。
rollforward
(other)如果不在偏移上,则将提供的日期向前滚动到下一个偏移。