在Python中动态计算不包括假日日历的工作日数

在Python中动态计算不包括假日日历的工作日数,python,pandas,numpy,dataframe,time-series,Python,Pandas,Numpy,Dataframe,Time Series,我想计算两个日期之间的工作日数,并用这些日期创建一个新的数据框列。我还有一个假日日历,我想在计算时排除假日日历中的日期 我环顾四周,发现numpy busday_count函数是一个有用的工具。该函数统计两个日期之间的工作日数,还允许您包括假日日历 我也环顾四周,看到了假期套餐,它给了我不同国家的假期日期。我认为将这个节日日历添加到numpy函数中会很棒 然后我接着说: import pandas as pd import numpy as np import holidays from dat

我想计算两个日期之间的工作日数,并用这些日期创建一个新的数据框列。我还有一个假日日历,我想在计算时排除假日日历中的日期

我环顾四周,发现numpy busday_count函数是一个有用的工具。该函数统计两个日期之间的工作日数,还允许您包括假日日历

我也环顾四周,看到了假期套餐,它给了我不同国家的假期日期。我认为将这个节日日历添加到numpy函数中会很棒

然后我接着说:

import pandas as pd
import numpy as np
import holidays
from datetime import datetime, timedelta, date

df = {'start' : ['2019-01-02', '2019-02-01'],
       'end' : ['2020-01-04', '2020-03-05']
    }
df = pd.DataFrame(df)

holidays_country = holidays.CountryHoliday('UnitedKingdom')
start_date = [d.date for d in df['start']]
end_date = [d.date for d in df['end']]
holidays_numpy = holidays_country[start_date:end_date]

df['business_days'] = np.busday_count(begindates = start_date,
                                      enddates = end_date,
                                      holidays=holidays_numpy)

当我运行此代码时,它抛出此错误
TypeError:无法将类型“”转换为日期

当我进一步查看时,我注意到开始日期和结束日期是列表,这可能是错误发生的原因

然后,我将
holidays\u numpy
变量更改为
holidays\u numpy=holidays\u country['2019-01-01':'2019-12-31']
,它成功了

但是,由于我的数据框中的每一行的日期都不同,是否有办法在my
holiday\u numpy
变量中设置两个参数,以从开始日期和结束日期分别选择相应的值(就像zip函数一样)

我对解决这个问题的其他方法也持开放态度。

这应该可以:

import pandas as pd
import numpy as np
import holidays 

df = {'start' : ['2019-01-02', '2019-02-01'],
       'end' : ['2020-01-04', '2020-03-05']}
df = pd.DataFrame(df)

holidays_country = holidays.CountryHoliday('UK')

def f(x):
  return np.busday_count(x[0],x[1],holidays=holidays_country[x[0]:x[1]])

df['business_days'] = df[['start','end']].apply(f,axis=1)

df.head()

嘿你试过了吗?现在对你有用吗?