首页 > 解决方案 > 计算不包括开始日期的工作日,并使用 busday_count 包括结束日期

问题描述

有什么方法可以排除 StartDate 并包括 EndDate,我使用了 busday_count,这肯定包括开始日期和排除结束日期?

np.busday_count('2020-05-06', '2020-05-17')

out: 8 正确的应该是 7 因为第一天是星期三,我们不想计算它,下周到星期五计算在内

提前致谢

标签: pythonpandasnumpy

解决方案


排除第一天:

您可以将开始日期和结束日期都加 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

第一个增量不包括开始日期,第二个增量包括计算中的结束日期。


排除第一个工作日:

>>> 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 作为结果。


推荐阅读