【发布时间】:2019-02-13 20:08:55
【问题描述】:
对于下面的日期时间数据,我想根据以下标准设置相对于“日期”的截止日期:
如果“日期”是在节假日或周末,则截止日期应为下一个工作日的 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']})
【问题讨论】:
-
您对所需输出的信心如何?对于您的第三列,时间在 9-17 之间,但您想要的结果是 not 同时