pandas.tseries.offsets.CustomBusinessHour#

класс pandas.tseries.offsets.CustomBusinessHour#

Подкласс DateOffset, представляющий возможно n пользовательских рабочих дней.

В CustomBusinessHour мы можем использовать пользовательские weekmask, holidays и calendar.

Параметры:
nint, по умолчанию 1

Количество представленных часов.

нормализоватьbool, по умолчанию False

Нормализовать начальные/конечные даты до полуночи перед генерацией диапазона дат.

weekmaskstr, по умолчанию ‘Mon Tue Wed Thu Fri’

Маска рабочих дней недели, передаваемая в numpy.busdaycalendar.

праздникиlist

Список/массив дат для исключения из набора рабочих дней, передается в numpy.busdaycalendar.

календарьnp.busdaycalendar

Календарь для интеграции.

началострока, время или список строк/времени, по умолчанию "09:00"

Время начала вашего пользовательского рабочего часа в 24-часовом формате.

endstr, time или список str/time, по умолчанию: “17:00”

Время окончания вашего пользовательского рабочего часа в 24-часовом формате.

смещение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)

Переместить указанную дату вперед к следующему смещению только если она не на смещении.