Если вы считаете рабочий день понедельником - пятницей
df['prev_bd'] = df['Date'] - pd.offsets.BusinessDay(n=1)
Date prev_bd
0 2012-12-20 2012-12-19
1 2012-12-21 2012-12-20
2 2012-12-22 2012-12-21
3 2012-12-23 2012-12-21
4 2012-12-24 2012-12-21
5 2012-12-25 2012-12-24
6 2012-12-26 2012-12-25
7 2012-12-27 2012-12-26
8 2012-12-28 2012-12-27
9 2012-12-29 2012-12-28
Когда вы также хотите пропустить праздники (или любой другой набор дат в частности). Здесь мы исключаем федеральные праздники, хотя вы можете пропустить любые даты, которые вы хотите, указав соответствующий календарь.
from pandas.tseries.holiday import USFederalHolidayCalendar
df['prev_nohol'] = df['Date'] - pd.offsets.CustomBusinessDay(n=1, calendar=USFederalHolidayCalendar())
#PerformanceWarning
Date prev_bd prev_nohol
0 2012-12-20 2012-12-19 2012-12-19
1 2012-12-21 2012-12-20 2012-12-20
2 2012-12-22 2012-12-21 2012-12-21
3 2012-12-23 2012-12-21 2012-12-21
4 2012-12-24 2012-12-21 2012-12-21
5 2012-12-25 2012-12-24 2012-12-24
6 2012-12-26 2012-12-25 2012-12-24 # Christmas skipped because Federal Holiday
7 2012-12-27 2012-12-26 2012-12-26
8 2012-12-28 2012-12-27 2012-12-27
9 2012-12-29 2012-12-28 2012-12-28
Пример данных
import pandas as pd
df = pd.DataFrame({'Date': pd.date_range('2012-12-20', periods=10, freq='D')})