С данными даты и времени ниже я хотел бы установить «крайний срок» относительно столбца «Дата».По сути, крайний срок должен составлять 2 рабочих дня с момента «даты».Однако есть некоторые конкретные критерии, которые приведены ниже:
Если «Дата» в праздничные или выходные дни, то крайний срок должен быть следующим 2 рабочим днем в 17:00.
Если «Дата» в понедельник-пятницу, а не в праздничные дни, а «Дата» находится в диапазоне от 0 до 8, то крайний срок должен быть следующим нерабочим, рабочим днем в 17:00 часов
Если «Дата» в понедельник-пятницу, а не в праздничные дни, а час «Дата» находится в промежутке между 9-17, то крайним сроком должны быть следующие 2 нерабочих, рабочих дня вв то же время.
Если «Дата» в понедельник-пятницу, а не в праздничные дни, а час «Дата» находится в интервале 18-23, то в качестве следующих двух не выходных днейрабочий день в 17:00
Ниже приведены данные:
import datetime
Holidays = [date(2018,1,1),date(2018,1,15),date(2018,2,19),date(2018,3,9)]
df = pd.DataFrame({'Date': ['2018-01-01 18:47','2018-01-08 06:11','2018-01-12 10:05','2018-02-10 09:22','2018-02-20 14:14','2018-03-08 16:17','2018-03-25 17:35'],
'Weekday': [0,0,4,5,1,3,6],
'Hour': [18,6,10,9,14,16,17]})
df['Date'] = pd.to_datetime(df['Date'])
Результат должен быть следующим:
df = pd.DataFrame({'Date': ['2018-01-01 18:47','2018-01-08 06:11','2018-01-12 10:05','2018-02-10 09:22','2018-02-21 14:14','2018-03-08 16:17','2018-03-25 17:35'],
'Deadline': ['2018-01-03 17:00','2018-01-09 17:00','2018-01-17 10:05','2018-02-13 17:00','2018-02-23 14:14','2018-03-13 16:17','2018-03-27 17:00']})