Не совсем так, как методы панд, но этот работает для меня:
import pandas as pd
from datetime import datetime
from pandas.tseries import offsets
from pandas.tseries.holiday import USFederalHolidayCalendar as calendar
def check_holidays(start_of_week, end_of_week, holidays ):
if end_of_week in holidays:
if end_of_week == start_of_week:
print('There are no business days this week')
return None
end_of_week = (end_of_week - offsets.Day(1))
end_of_week = check_holidays(start_of_week, end_of_week, holidays)
return end_of_week
def BWeekEnd(current_date, holidays=None, friday=4, startdate='2019-01-01', enddate='2019-12-31'):
current_date = datetime.strptime(current_date.isoformat()[:10], '%Y-%m-%d') # round time to 00:00:00
start_of_week = (current_date - offsets.Day(current_date.weekday(), normalize=True))
end_of_week = (current_date + offsets.Day(friday - current_date.weekday(), normalize=True))
if not holidays:
cal = calendar()
holidays = cal.holidays(start=startdate, end=enddate)
end_of_week = check_holidays(start_of_week, end_of_week, holidays)
if end_of_week:
return end_of_week.date()
else:
return None
current_date = datetime.today()
BWeekEnd(current_date, holidays=[pd.to_datetime('2019-03-01'),
pd.to_datetime('2019-02-28'),
pd.to_datetime('2019-02-27'),
pd.to_datetime('2019-02-26'),
pd.to_datetime('2019-02-25')])