Skip to main content
`Ctrl`+`K`

# pandas.tseries.offsets.CustomBusinessMonthEnd

class pandas.tseries.offsets.CustomBusinessMonthEnd

  DateOffset subclass representing custom business month(s).

  Increments between end of month dates.

  Parameters:
    n int, default 1

      The number of months represented.

    normalize bool, default False

      Normalize 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.

  See also

  `DateOffset`

    Standard kind of date increment.

  Examples

  In the example below we use the default parameters.

      >>> ts = pd.Timestamp(2022, 8, 5)
      >>> ts + pd.offsets.CustomBusinessMonthEnd()
      Timestamp('2022-08-31 00:00:00')

  Custom business month end 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.CustomBusinessMonthEnd(weekmask="Wed Thu")
      >>> pd.date_range(dt.datetime(2022, 7, 10), dt.datetime(2022, 12, 18),
      ...               freq=freq).strftime('%a %d %b %Y %H:%M')
      Index(['Thu 28 Jul 2022 00:00', 'Wed 31 Aug 2022 00:00',
             'Thu 29 Sep 2022 00:00', 'Thu 27 Oct 2022 00:00',
             'Wed 30 Nov 2022 00:00'],
             dtype='object')

  Using NumPy business day calendar you can define custom holidays.

      >>> import datetime as dt
      >>> bdc = np.busdaycalendar(holidays=['2022-08-01', '2022-09-30',
      ...                                   '2022-10-31', '2022-11-01'])
      >>> freq = pd.offsets.CustomBusinessMonthEnd(calendar=bdc)
      >>> pd.date_range(dt.datetime(2022, 7, 10), dt.datetime(2022, 11, 10), freq=freq)
      DatetimeIndex(['2022-07-29', '2022-08-31', '2022-09-29', '2022-10-28'],
                     dtype='datetime64[ns]', freq='CBME')

  Attributes

  `base` | Returns a copy of the calling offset object with n=1 and all other attributes equal.
  `calendar` |
  `cbday_roll` | Define default roll function to be called in apply method.
  `freqstr` | Return a string representing the frequency.
  `holidays` |
  `kwds` | Return a dict of extra parameters for the offset.
  `m_offset` |
  `month_roll` | Define default roll function to be called in apply method.
  `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` |

  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.