Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
实现Excel';使用python显示工作日(工作日)的NETWORKDAYS逻辑_Python_Excel_Pandas_Numpy_Datetime - Fatal编程技术网

实现Excel';使用python显示工作日(工作日)的NETWORKDAYS逻辑

实现Excel';使用python显示工作日(工作日)的NETWORKDAYS逻辑,python,excel,pandas,numpy,datetime,Python,Excel,Pandas,Numpy,Datetime,我试图使用numpy.busday\u count方法在python中实现excel networkdays公式的逻辑。但我无法获得预期的输出。附件是excel和代码的输出 下面是代码 import numpy as np from datetime import date start_date = date(2020, 3, 30) end_date = date(2020, 1,1) np.busday_count(start_date, end_date) o/p:-63 预期产出:-

我试图使用numpy.busday\u count方法在python中实现excel networkdays公式的逻辑。但我无法获得预期的输出。附件是excel和代码的输出

下面是代码

import numpy as np
from datetime import date
start_date = date(2020, 3, 30)
end_date = date(2020, 1,1)
np.busday_count(start_date, end_date)
o/p:-63 预期产出:-64


请帮我解决这个问题。

numpy函数不包含end_date参数,而excel函数包含end_date参数。看5月5日的那排。Excel说5/4和5/5之间有两天,因为Excel计算的是第4天和第5天。努比只算第四名。这就是为什么你的答案只差1分。在python中尝试将end_date增加+1,以获得相同的结果

np.busday_count(start_date, end_date + datetime.timedelta(days=1)
但是,由于您的许多结束日期早于开始日期,这可能并不适用于所有情况。你可能需要这样做

max_date = max(start_date, end_date) + datetime.timedelta(days=1)
min_date = min(start_date, end_date)
np.busyday_count(min_date, max_date) * np.sign(end_date - start_date)

编辑1:numpy函数参数的顺序错误。我已更正。

使用下线np.busday\u计数(最小日期、最大日期)*np.sign(结束日期-开始日期)时出现错误。您能告诉我错误是什么,以便我能更好地提供帮助吗?我确实看到你的代码有拼写错误。忙碌的一天应该是忙碌的一天。