Python 获取Pandas中的工作日时出错

Python 获取Pandas中的工作日时出错,python,pandas,Python,Pandas,我有以下数据框,其中有几列是日期范围的开始和结束日期,我想检查这两个日期之间的工作日: In [139]: df.head() Out[139]: Num Material Kilos Sold Date Year Week_Number \ 0 5881999 1020252 629 1434120 2019-06-14 2019 24 1 94623000 1022746

我有以下数据框,其中有几列是日期范围的开始和结束日期,我想检查这两个日期之间的工作日:

In [139]: df.head()
Out[139]: 
         Num  Material  Kilos        Sold      Date   Year  Week_Number  \
0    5881999   1020252    629     1434120 2019-06-14  2019           24   
1   94623000   1022746    598     1572740 2019-06-12  2019           24   
2   77274650   1022470    920     1684520 2019-06-25  2019           26   
3   94623000   1022643   1215     2563650 2019-01-23  2019            4   
40  94623000   1021478    581     1528030 2018-10-23  2018           43   

    Week_init   Week_end  
0  2019-06-10 2019-06-15  
1  2019-06-10 2019-06-15  
2  2019-06-24 2019-06-29  
3  2019-01-21 2019-01-26  
40 2018-10-22 2018-10-27 
但是,当我尝试使用
np.busday\u count
函数时,如下所示:

df["b_days"] = np.busday_count(df['Week_init'], df['Week_fin'], 
  weekmask=bday_custom.weekmask, holidays=bday_custom.holidays)
df['Week_init'] = df['Week_init'].values.astype('datetime64[D]')
我得到以下错误:

TypeError:无法根据规则“安全”将迭代器操作数0 dtype从dtype('M8[ns]')强制转换为dtype('M8[D]')

看起来函数正在抱怨
Week\u init
Week\u end
d类型,但我尝试更改它的类型,但没有成功,如下所示:

df["b_days"] = np.busday_count(df['Week_init'], df['Week_fin'], 
  weekmask=bday_custom.weekmask, holidays=bday_custom.holidays)
df['Week_init'] = df['Week_init'].values.astype('datetime64[D]')
但是,数据类型保持为:

In [140]: df['Week_init'].dtype
Out[140]: dtype('<M8[ns]')
[140]中的
:df['Week_init'].dtype

Out[140]:dtype('Add
dt.date
例如
np.busday\u count(df['Week\u init'].dt.date,df['Week\u end'].dt.date)
谢谢Michael,尝试过了,但是新类型“object”返回以下错误:
TypeError:无法将数组数据从dtype('O')转换为dtype(“我认为您的一些日期是字符串表示形式。在将它们传递到
np.busday\u count
之前,将它们转换为带有
pd.to_datetime
的日期。但是日期已经是datetime元素,因此仍然面临相同的问题。