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('Adddt.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元素,因此仍然面临相同的问题。