Skip to main content
`Ctrl`+`K`

# pandas.tseries.offsets.CustomBusinessDay

class pandas.tseries.offsets.CustomBusinessDay

  DateOffset subclass representing possibly n custom business days.

  In CustomBusinessDay we can use custom weekmask, holidays, and calendar.

  Parameters:
    n int, default 1

      The number of days represented.

    normalize bool, default False

      Normalize start/end dates to midnight before generating date range.

    weekmask str, Default ‘Mon Tue Wed Thu Fri’

      Weekmask of valid business days, passed to `numpy.busdaycalendar`.

    holidays list

      List/array of dates to exclude from the set of valid business days, passed to `numpy.busdaycalendar`.

    calendar np.busdaycalendar

      Calendar to integrate.

    offset timedelta, default timedelta(0)

      Time offset to apply.

  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 `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.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')

  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[ns]', 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')

  Attributes

  `base` | Returns a copy of the calling offset object with n=1 and all other attributes equal.
  `calendar` | Return the calendar used for business day calculations.
  `freqstr` | Return a string representing the frequency.
  `holidays` | Return the holidays used for custom business day calculations.
  `kwds` | Return a dict of extra parameters for the offset.
  `n` | Return the count of the number of periods.
  `name` | Return a string representing the base frequency.
  `nanos` | Returns an integer of the total number of nanoseconds for fixed frequencies.
  `normalize` | Return boolean whether the frequency can align with midnight.
  `offset` | Alias for self._offset.
  `rule_code` | Return a string representing the base frequency.
  `weekmask` | Return the weekmask used for custom business day calculations.

  Methods

  `copy`() | Return a copy of the frequency.
  `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`(dt) | Roll provided date backward to next offset only if not on offset.
  `rollforward`(dt) | Roll provided date forward to next offset only if not on offset.