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')
>>> 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')
You can divide your business day hours into several parts.
>>> 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')
Business days can be specified by
weekmask
parameter. 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.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.
>>> 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')
Attributes
base
Returns 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_bday
Used for moving to next business day.
offset
Alias 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.