使用busday_count计算不包括开始日期但包括结束日期的工作日数量

1 投票
1 回答
967 浏览
提问于 2025-06-18 04:04

有没有办法排除开始日期而只包含结束日期?我用的是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来做个最大值处理。

撰写回答