What is Pandas bdate_range() function

Pandas Bdate Range

Let’s try to comprehend the bdate_range() function, one of the general functions of the Pandas package, in this post. Data manipulation and comprehension are done with the Python computer language’s Pandas library.

The term “Pandas” is intended to apply to both “Panel Data” and “Python Data Analysis.” It offers certain approaches and data formats, and it aids in working with time series and mathematical tables.

The bdate_range() function from the Pandas package stands for business date_range and is one such tool for working with time series. It makes it easier to create the original DatetimeIndex series with the business day as the default. Let’s examine its syntax and Python implementation.

Also read: Pandas pivot – Return reshaped DataFrame

Why bdate_range() is used?

This function returns a fixed frequency DatetimeIndex with the default being a business day. Three out of the four parameters—start, end, periods, and freq must be given exactly. It is necessary to specify frequency in order to use bdate_range. If specifying frequency is not desired, use date_range.

This function is like a derived function of the date_range() function in Pandas. The bdate_range has additional business days and holidays features to it. This feature makes working on big datasets much more efficient and convenient.

Syntax of Pandas bdate_range

pandas.bdate_range(start=None, end=None, periods=None, freq='B', tz=None, normalize=True, name=None, weekmask=None, holidays=None, closed=_NoDefault.no_default, inclusive=None, **kwargs)
  • start: string or datetime-like, optional
    • This value is used as a left bound.
  • end: string or datetime-like, optional
    • This value is used as a right bound.
  • periods: integer, optional
    • The number of periods to produce.
  • freq: string or DateOffset, default ‘B’
    • Multiple frequency strings are possible, like “3H.”
  • tz: string, optional
    • Name of the time zone being used return a localized DatetimeIndex, such as “Asia/Kolkata.” The generated DatetimeIndex is timezone-naive by default.
  • normalize: bool, default = False
    • Prior to constructing a date range, normalize the start and end dates to midnight.
  • name: string, default=None
    • Resulting DatetimeIndex’s name.
  • weekmask: string, default = None
    • Only used when custom frequency strings are supplied to numpy.busdaycalendar, weekmask of legal business days. “Mon Tue Wed Thu Fri” is similar to the default value of None.
  • holidays: list-like, default = None
    • Dates that should not be included in the list of legal business days and are only utilized when custom frequency strings are supplied to numpy.busdaycalendar.
  • closed: string, default = None
    • Close the interval to either the left, right, or both sides of the specified frequency (None).
  • inclusive: {“both”, “neither”, “left”, “right”}, default “both”
    • Add boundaries; choose whether to mark each boundary as closed or open.
  • **kwargs
    • in order to be compatible, has no impact on the outcome.

Argument closed is no longer recommended in order to standardize boundary inputs. To specify whether each bound is closed or open, use inclusive instead. Both closed and inclusive arguments work the same.

Check more frequency strings by clicking here. By default, the frequency is set to ‘B’ which is a business day for the bdate_range function.

Implementing Pandas bdate_range()

Before beginning the methods, be sure to load the pandas package into your IDE. Run the following line of code in your IDE to accomplish this.

import pandas as pd

Example 1: Passing only start and end parameters

pd.bdate_range(start='1/25/2023', end='1/31/2023')
Example 1: Passing only start and end parameters
Example 1: Passing only start and end parameters

Take note of how the two weekend days (2023-01-28- Saturday and 2023-01-29 – Sunday) are omitted from the outcome. Also, the frequency of the output is by default ‘B’ which stands for business day frequency

Example 2: Passing holidays parameter

import datetime
holiday = [datetime.datetime(2023, 1, 26)] #assigning holiday
pd.bdate_range(start='1/25/2023', end='1/31/2023', freq='C', holidays=holiday)
Example 2: Passing holidays parameter
Example 2: Passing holidays parameter

Note: to use the ‘holidays’ parameter, the frequency must be custom, hence ‘freq’ is assigned the value ‘C’ which stands for custom business day frequency.

Example 3: Passing weekmask parameter

weekmask = "Mon Tue Wed Thu"
pd.bdate_range(start='1/25/2023', end='1/31/2023', freq='C', weekmask = weekmask)
Example 3: Passing weekmask parameter
Example 3: Passing weekmask parameter

Note, because we have provided customized weeekmask, hence even the 2023-01-27 which is Friday is also excluded from the outcome.


Pandas is one of the most efficient packages in python when it comes to working with large datasets. Functions like the one discussed above, make working on large datasets with time and date formats much easier. bdate_range() is a convenient way to customize the data involving dates.

To learn more about Pandas built-in functions and Python language click here!