pandas.tseries.offsets.CustomBusinessHour#
- classpandas.tseries.offsets.CustomBusinessHour#
DateOffset subclass representing possibly n custom business days.
In CustomBusinessHour we can use custom weekmask, holidays, and calendar.
- Parameters:
- nint, default 1
The number of hours 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.
- startstr, time, or list of str/time, default "09:00"
Start time of your custom business hour in 24h format.
- endstr, time, or list of str/time, default: "17:00"
End time of your custom business hour in 24h format.
- offsettimedelta, default timedelta(0)
Time offset to apply.
Examples
In the example below the default parameters give the next business hour.
>>> ts = pd.Timestamp(2022, 8, 5, 16) >>> ts + pd.offsets.CustomBusinessHour() Timestamp('2022年08月08日 09:00:00')
We can also change the start and the end of business hours.
>>> ts = pd.Timestamp(2022, 8, 5, 16) >>> ts + pd.offsets.CustomBusinessHour(start="11:00") Timestamp('2022年08月08日 11:00:00')
>>> fromdatetimeimport 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')
You can divide your business day hours into several parts.
>>> importdatetimeasdt >>> 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')
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.>>> importdatetimeasdt >>> 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')
Using NumPy business day calendar you can define custom holidays.
>>> importdatetimeasdt >>> 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')
Attributes
baseReturns a copy of the calling offset object with n=1 and all other attributes equal.
Return a string representing the frequency.
Return a dict of extra parameters for the offset.
Return a string representing the base frequency.
next_bdayUsed for moving to next business day.
offsetAlias for self._offset.
Methods
copy()Return a copy of the frequency.
(DEPRECATED) Return boolean whether the frequency is a unit frequency (n=1).
is_month_end(ts)Return boolean whether a timestamp occurs on the month end.
is_month_start(ts)Return boolean whether a timestamp occurs on the month start.
is_on_offset(dt)Return boolean whether a timestamp intersects with this frequency.
is_quarter_end(ts)Return boolean whether a timestamp occurs on the quarter end.
is_quarter_start(ts)Return boolean whether a timestamp occurs on the quarter start.
is_year_end(ts)Return boolean whether a timestamp occurs on the year end.
is_year_start(ts)Return boolean whether a timestamp occurs on the year start.
rollback(other)Roll provided date backward to next offset only if not on offset.
rollforward(other)Roll provided date forward to next offset only if not on offset.