С данными даты и времени, приведенными ниже, я хотел бы установить крайний срок относительно даты на основе следующих критериев:
Если «Дата» в праздничные или выходные дни, то крайний срок должен быть на следующий рабочий день в 17:00.
Если «Дата» в понедельник-пятницу, а не в праздничные дни, а час «Дата» находится в диапазоне от 0 до 8, то крайний срок должен быть в тот же рабочий день в 17:00
Если «Дата» в понедельник-пятницу, а не в праздничные дни, а час «Дата» находится в интервале 9-17, то крайним сроком должен быть следующий нерабочий, рабочий день в то же время.
Если «Дата» в понедельник-пятницу, а не в праздничные дни, И час «Дата» находится в интервале 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-02 17:00','2018-01-08 17:00','2018-01-16 10:05','2018-02-12 17:00','2018-02-22 14:14','2018-03-12 16:17','2018-03-26 17:00']})