Функция bdate_range
Функция bdate_range создаёт индекс с рабочими датами
(исключая субботу и воскресенье). Это удобно для финансовых
и бизнес-задач, где нужны только будние дни. Первым параметром
можно передать начальную дату start, вторым - конечную
end, либо указать количество периодов periods.
Также можно задать частоту freq (по умолчанию 'B')
и смещение tz для часового пояса.
Синтаксис
pd.bdate_range(start=None, end=None, periods=None, freq='B', tz=None, normalize=False, name=None, weekmask=None, holidays=None, closed=None, inclusive=None, **kwargs)
Пример
Создадим диапазон рабочих дат с указанием начала и конца:
import pandas as pd
dates = pd.bdate_range(start='2026-01-01', end='2026-01-10')
print(dates)
Результат выполнения кода:
DatetimeIndex(['2026-01-01', '2026-01-02', '2026-01-05', '2026-01-06',
'2026-01-07', '2026-01-08', '2026-01-09'],
dtype='datetime64[ns]', freq='B')
В выходные дни (суббота и воскресенье) даты не включаются.
Пример
Укажем количество периодов вместо конечной даты:
import pandas as pd
dates = pd.bdate_range(start='2026-01-01', periods=5)
print(dates)
Результат выполнения кода:
"DatetimeIndex(['2026-01-01', '2026-01-02', '2026-01-05', '2026-01-06', '2026-01-07'], dtype='datetime64[ns]', freq='B')"
Пример
Исключим праздничные дни с помощью параметра holidays:
import pandas as pd
holidays = ['2026-01-01', '2026-01-02']
dates = pd.bdate_range(start='2026-01-01', end='2026-01-10', holidays=holidays)
print(dates)
Результат выполнения кода:
DatetimeIndex(['2026-01-05', '2026-01-06', '2026-01-07', '2026-01-08',
'2026-01-09'],
dtype='datetime64[ns]', freq='B')
Первого и второго января (праздничные дни) исключены из диапазона.
Пример
Создадим DataFrame с индексом из рабочих дат:
import pandas as pd
dates = pd.bdate_range(start='2026-01-01', periods=5)
df = pd.DataFrame({
'a': [1, 2, 3, 4, 5],
'b': [10, 20, 30, 40, 50]
}, index=dates)
print(df)
Результат выполнения кода:
a b
2026-01-01 1 10
2026-01-02 2 20
2026-01-05 3 30
2026-01-06 4 40
2026-01-07 5 50
Индекс содержит только рабочие дни, пропуская выходные.
Пример
Используем параметр closed для управления включением границ:
import pandas as pd
dates = pd.bdate_range(start='2026-01-01', end='2026-01-05', closed='left')
print(dates)
Результат выполнения кода:
"DatetimeIndex(['2026-01-01', '2026-01-02'], dtype='datetime64[ns]', freq='B')"
Значение closed='left' исключает правую границу (2026-01-05).
Смотрите также
-
функция
date_range,
которая создаёт диапазон календарных дат -
функция
to_datetime,
которая преобразует данные в даты и время -
функция
to_timedelta,
которая преобразует данные в промежутки времени -
функция
period_range,
которая создаёт диапазон периодов времени