У меня есть список недействительных дат (это может быть праздничный c праздник в определенной области / стране или любая другая недействительная дата, и это может быть длинный список, включающий несколько лет):
Holiday = ['2020-01-01','2020-01-09','2020-01-10']
Я хочу создать функцию поиска, при которой при заданной дате функция будет искать предыдущую действительную дату (исключая выходные и праздничные дни). Например, текущая дата - «2020-01-13», тогда действительной датой будет «2020-01-08», потому что «2020-01-09» и «2020-01-10» находятся в праздничных днях, а «2020». -01-11 'и' 2020-01-12 '- выходные.
Моя функция:
from pandas.tseries.offsets import BDay
def the_date(today):
today = datetime.strptime(today,'%Y-%m-'%d').date()
the_date = today - BDay(1)
the_date = datetime.strftime(the_date,'%Y-%m-%d')
if the_date in Holiday:
the_new_date = (datetime.strptime(Holiday[Holiday.index(the_date)],'%Y-%m-%d') - BDay(1)).date()
the_new_date = datetime.strftime(the_new_date,'%Y-%m-%d')
else:
the_new_date = the_date
return the_new_date
Когда я использую эту функцию:
today = '2020-01-13'
the_new_date = the_date(today)
обязательно the_new_date - это '2020-01-09', потому что моя функция не может идентифицировать два последовательных недействительных дня (праздник) - есть ли способ заставить мою функцию идентифицировать два последовательных праздника, чтобы мой результат (the_new_date) был ' 2020-01-08 '? Спасибо.