使用busday_count计算不包括开始日期但包括结束日期的工作日数量
有没有办法排除开始日期而只包含结束日期?我用的是busday_count,这个方法肯定是包括开始日期而排除结束日期的。
np.busday_count('2020-05-06', '2020-05-17')
输出结果是8,但正确的结果应该是7,因为第一天是星期三,我们不想算上这一天,而下个星期的星期五却被算进去了。
提前谢谢你!
相关问题:
- 暂无相关问题
1 个回答
2
要排除第一天:
你可以把开始日期和结束日期都加1:
>>> start = np.datetime64('2020-05-06')
>>> end = np.datetime64('2020-05-17')
>>> np.busday_count(start,end)
8
>>> np.busday_count(start+1,end+1)
7
这样做的第一个加1是为了排除开始日期,第二个加1则是为了把结束日期算进去。
要排除第一个工作日:
>>> start = np.datetime64('2020-05-10')
>>> end = np.datetime64('2020-05-21')
>>> max(np.busday_count(start, end)-1+np.is_busday(end),0)
8
在这里,你需要减去1,因为你总是想排除第一个工作日。如果结束日期也是工作日,那就再加1。最后,为了避免没有工作日的情况(这样会导致结果变成-1),我们用0来做个最大值处理。