Spec-Zone.ru › pandas 2

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 и всеми другими атрибутами равными.

calendar

end

freqstr

Возвращает строковое представление частоты.

holidays

kwds

Возвращает словарь дополнительных параметров смещения.

n

name

Возвращает строку, представляющую основную частоту.

nanos

next_bday

Используется для перехода к следующему рабочему дню.

normalize

offset

Псевдоним для self._offset.

rule_code

start

weekmask

Методы

copy()

Возвращает копию частоты.

is_anchored()

(УСТЕРЕЖДАЕТСЯ) Возвращает булево значение, является ли частота единичной частотой (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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API