pandas.tseries.offsets.CustomBusinessHour
- classpandas.tseries.offsets.CustomBusinessHour
-
Класс-потомок DateOffset, представляющий возможно n пользовательских рабочих дней.
В CustomBusinessHour мы можем использовать пользовательскую маску недели, праздничные дни и календарь.
- Параметры:
-
- n:int, по умолчанию 1
-
Количество часов, которые представляются.
- normalize:bool, по умолчанию False
-
Нормализовать даты начала/окончания до полуночи перед генерацией диапазона дат.
- weekmask:str, По умолчанию ‘Mon Tue Wed Thu Fri’
-
Маска недели для рабочих дней, передается в
numpy.busdaycalendar. - holidays:list
-
Список/массив дат, которые необходимо исключить из набора рабочих дней, передается в
numpy.busdaycalendar. - calendar:np.busdaycalendar
-
Календарь для интеграции.
- start:str, время или список str/время, по умолчанию “09:00”
-
Время начала пользовательского рабочего часа в формате 24 ч.
- end:str, время или список str/время, по умолчанию: “17:00”
-
Время окончания пользовательского рабочего часа в формате 24 ч.
- offset:timedelta, по умолчанию 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')Атрибуты
baseВозвращает копию вызываемого объекта смещения с n=1 и всеми другими атрибутами равными.
Возвращает строковое представление частоты.
Возвращает словарь дополнительных параметров смещения.
Возвращает строку, представляющую основную частоту.
next_bdayИспользуется для перехода к следующему рабочему дню.
offsetПсевдоним для self._offset.
Методы
copy()Возвращает копию частоты.
(УСТЕРЕЖДАЕТСЯ) Возвращает булево значение, является ли частота единичной частотой (n=1).
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)Возвращает булево значение, происходит ли отметка времени в начале года.
rollback(other)Откатывает заданную дату назад до следующего смещения только если она не находится на смещении.
rollforward(other)Откатывает заданную дату вперед до следующего смещения только если она не находится на смещении.
© 2008–2022, AQR Capital Management, LLC, Lambda Foundry, Inc. and PyData Development Team
Licensed under the 3-clause BSD License.
https://pandas.pydata.org/pandas-docs/version/2.2.2/reference/api/pandas.tseries.offsets.CustomBusinessHour.html