pandas.tseries.offsets.CustomBusinessDay#
- класс pandas.tseries.offsets.CustomBusinessDay#
Подкласс DateOffset, представляющий возможно n пользовательских рабочих дней.
В CustomBusinessDay мы можем использовать пользовательскую маску недели, праздники и календарь.
- Параметры:
- nint, по умолчанию 1
Количество представленных дней.
- нормализоватьbool, по умолчанию False
Нормализовать начальные/конечные даты до полуночи перед генерацией диапазона дат.
- weekmaskstr, по умолчанию ‘Mon Tue Wed Thu Fri’
Маска рабочих дней недели, передаваемая в
numpy.busdaycalendar.- праздникиlist
Список/массив дат для исключения из набора рабочих дней, передается в
numpy.busdaycalendar.- календарьnp.busdaycalendar
Календарь для интеграции.
- смещениеtimedelta, по умолчанию timedelta(0)
Смещение времени для применения.
Примеры
В примере ниже параметры по умолчанию дают следующий рабочий день.
>>> ts = pd.Timestamp(2022, 8, 5, 16) >>> ts + pd.offsets.CustomBusinessDay() Timestamp('2022-08-08 16:00:00')
Рабочие дни могут быть указаны с помощью
weekmaskпараметр. Чтобы преобразовать возвращаемый объект datetime в его строковое представление, в следующем примере используется функция strftime().>>> import datetime as dt >>> freq = pd.offsets.CustomBusinessDay(weekmask="Mon Wed Fri") >>> pd.date_range(dt.datetime(2022, 12, 10), dt.datetime(2022, 12, 21), ... freq=freq).strftime('%a %d %b %Y %H:%M') Index(['Mon 12 Dec 2022 00:00', 'Wed 14 Dec 2022 00:00', 'Fri 16 Dec 2022 00:00', 'Mon 19 Dec 2022 00:00', 'Wed 21 Dec 2022 00:00'], dtype='object')
Используя календарь рабочих дней NumPy, вы можете определить пользовательские праздники.
>>> import datetime as dt >>> bdc = np.busdaycalendar(holidays=['2022-12-12', '2022-12-14']) >>> freq = pd.offsets.CustomBusinessDay(calendar=bdc) >>> pd.date_range(dt.datetime(2022, 12, 10), dt.datetime(2022, 12, 25), freq=freq) DatetimeIndex(['2022-12-13', '2022-12-15', '2022-12-16', '2022-12-19', '2022-12-20', '2022-12-21', '2022-12-22', '2022-12-23'], dtype='datetime64[ns]', freq='C')
Если вы хотите сдвинуть результат на n дней, вы можете использовать параметр
offset.>>> pd.Timestamp(2022, 8, 5, 16) + pd.offsets.CustomBusinessDay(1) Timestamp('2022-08-08 16:00:00')
>>> import datetime as dt >>> ts = pd.Timestamp(2022, 8, 5, 16) >>> ts + pd.offsets.CustomBusinessDay(1, offset=dt.timedelta(days=1)) Timestamp('2022-08-09 16:00:00')
Атрибуты
baseВозвращает копию вызывающего объекта смещения с n=1 и всеми остальными атрибутами равными.
Возвращает строку, представляющую частоту.
Возвращает словарь дополнительных параметров для смещения.
Возвращает строку, представляющую базовую частоту.
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(dt)Переместить предоставленную дату назад к следующему смещению только если она не на смещении.
rollforward(dt)Переместить указанную дату вперед к следующему смещению только если она не на смещении.