在Python中动态计算不包括假日日历的工作日数
我想计算两个日期之间的工作日数,并用这些日期创建一个新的数据框列。我还有一个假日日历,我想在计算时排除假日日历中的日期 我环顾四周,发现numpy busday_count函数是一个有用的工具。该函数统计两个日期之间的工作日数,还允许您包括假日日历 我也环顾四周,看到了假期套餐,它给了我不同国家的假期日期。我认为将这个节日日历添加到numpy函数中会很棒 然后我接着说:在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
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']
,它成功了
但是,由于我的数据框中的每一行的日期都不同,是否有办法在myholiday\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()
嘿你试过了吗?现在对你有用吗?