假设我们有一个日期2019-11-19
,就是星期二。现在我想把星期二起的3个工作日取回来,也就是说,我想取2019-11-15
,因为16号和17号分别是星期六和星期天。为了实现这一点,我有以下代码:
dt_tue = datetime.strptime('2019-11-19','%Y-%m-%d')
bd-3 = dt_tue - timedelta(days=3) #<--- 3 business days prior
for i in range(bd_3.day,dt_tue.day+1):
dt_in = datetime(dt_tue.year,dt_tue.month,i)
if dt_in.weekday() > 5:
bd_3 = dt_tue - timedelta(4)
上面的代码生成bd_3作为2019年11月15日,也就是星期五,这是正确的
我想在上面的代码中处理一个假日(如dataframe中提供的)。例如,如果dt_in
属于任何假日(包括bd_3
和dt_tue
),那么bd\u3应该是11月14日。除了假日在周六或周日之外,bd\u3应该是11月15日
任何人都能发光吗?假设假日数据帧如下所示:
Date Holiday_name Day
January 1, 2019 New Year's Day Tuesday
January 21, 2019 Martin Luther King Day Monday
February 18, 2019 Presidents' Day* Monday
May 27, 2019 Memorial Day Monday
既然你整天都在忙着循环,我建议你每天做一个简单的备份和检查,比如:
你可能需要调整一下,因为我不是100%确定你的假日数据帧是如何格式化的
相关问题 更多 >
编程相关推荐