pandas.tseries.offsets.CustomBusinessDay#
- class pandas.tseries.offsets.CustomBusinessDay(n=1, normalize=False, weekmask='Mon Tue Wed Thu Fri', holidays=None, calendar=None, offset=datetime.timedelta(0))#
DateOffset subclass representing possibly n custom business days.
In CustomBusinessDay we can use custom weekmask, holidays, and calendar.
- Parameters:
- nint, default 1
The number of days represented.
- normalizebool, default False
Normalize start/end dates to midnight before generating date range.
- weekmaskstr, Default ‘Mon Tue Wed Thu Fri’
Weekmask of valid business days, passed to
numpy.busdaycalendar.- holidayslist
List/array of dates to exclude from the set of valid business days, passed to
numpy.busdaycalendar.- calendarnp.busdaycalendar
Calendar to integrate.
- offsettimedelta, default timedelta(0)
Time offset to apply.
Attributes
Return the weekmask used for custom business day calculations.
Return the holidays used for custom business day calculations.
Return the calendar used for business day calculations.
Return the time offset applied to the business day.
See also
DateOffsetStandard kind of date increment.
Examples
In the example below the default parameters give the next business day.
>>> ts = pd.Timestamp(2022, 8, 5, 16) >>> ts + pd.offsets.CustomBusinessDay() Timestamp('2022-08-08 16:00:00')
Business days can be specified by
weekmaskparameter. To convert the returned datetime object to its string representation the function strftime() is used in the next example.>>> 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='str')
Using NumPy business day calendar you can define custom holidays.
>>> 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[us]', freq='C')
If you want to shift the result on n day you can use the parameter
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')