通过使用python退出周末和特定假日,计算两个日期之间的工作日数

通过使用python退出周末和特定假日,计算两个日期之间的工作日数,python,Python,我有一个存储在excel文件中的假期列表。我想通过忽略excel文件中存储的假日来计算两个日期(date\u 1和date\u 2)之间的工作日数 我尝试了np.busday\u count,但我不知道如何包含我的假期文件。这是我的代码: claim=pd.read_excel("claim.xlsx") Holydays=pd.read_excel("Holidays.xlsx") claim.columns claim["Resolved"] = pd.to_datetime(claim[

我有一个存储在excel文件中的假期列表。我想通过忽略excel文件中存储的假日来计算两个日期(
date\u 1
date\u 2
)之间的工作日数

我尝试了
np.busday\u count
,但我不知道如何包含我的假期文件。这是我的代码:

claim=pd.read_excel("claim.xlsx")
Holydays=pd.read_excel("Holidays.xlsx")
claim.columns

claim["Resolved"] = pd.to_datetime(claim["Resolved"]).dt.strftime('%Y-%m-%d')
claim["Received_date"] = pd.to_datetime(claim["Received_date"]).dt.strftime('%Y-%m-%d')

#Je définie mes dates
date_1=claim["Received_date"]
date_2=claim["Resolved"]

#Calcul du nombre de jours entre la date et la date de résolution du dossier
claim["nb_jours"] = np.busday_count(date_1, date_2)


这应该可以做到:

将numpy导入为np
maskcal=np.busdaycalendar(
假日=[
'2019-12-24', 
'2020-01-01', 
'2020-01-06', 
'2020-01-10'
])
差异天数=np.busday\u计数(
'2019-12-20', '2020-01-20', 
busdaycal=maskcal
)
输出:

17

np.busdaycalendar
适用于周末(即周六-周日)。您只需读取excel文件,并将其格式设置为日期时间可读格式。

您应该尝试为每个数据帧提供一些示例数据。但是,看起来您只缺少减去日期1和日期2之间的假期数。这可以由Holydays[column_name]完成。介于(date_1,date_2)之间。count()谢谢Grzegorz Skibinski。我试图将我的假日列为列表,但我看到了:``maskcal=np.busdaycalendar(holidays=holydays['Date'].tolist())[Timestamp('2017-01-02 00:00:00')、Timestamp('2017-02-20 00:00:00')、``当我试图运行您的代码时,我在maskcal=np.busdaycalendar(holidays=holydays['Date'].tolist()中得到了这个错误:``文件“”,第1行)ValueError:无法安全地将提供的假日输入转换为日期数组``请尝试:
Holydays['Date'].apply(lambda x:x.Date()).tolist()
非常感谢您的回答。但当我执行时它仍然不起作用:
maskcal=np.busdaycalendar(Holydays['Date'].apply(lambda x:x.Date()).tolist())
我得到了这个错误:
ValueError:businessday-weekmask数组的长度必须为7
您需要执行的操作:
maskcal=np.busdaycalendar(holidays=Holydays['Date'].apply(lambda x:x.Date()).tolist())
供参考:您可以指定工作日(如周一至周五的'11111 00',以及除此之外的假期。