Series.astype
将所有类似日期的对象转换为datetime64[ns]
。要转换为datetime64[D]
,请values
在调用之前使用获取NumPy数组astype
:
dates_input = df["month_15"].values.astype('datetime64[D]')
请注意,NDFrames(例如Series和DataFrames)只能将类似日期时间的对象保存为dtype对象datetime64[ns]
。将所有日期时间喜欢项自动转换为通用dtype可以简化后续日期计算。但是,这使得不可能datetime64[s]
在DataFrame列中存储 对象。熊猫的核心开发人员Jeff Reback解释说,
“我们不允许直接转换,因为它太复杂了,无法在内部保留除datetime64 [ns]以外的任何东西(根本没有必要)。”
另请注意,即使df['month_15'].astype('datetime64[D]')
具有dtype datetime64[ns]
:
In [29]: df['month_15'].astype('datetime64[D]').dtype
Out[29]: dtype('<M8[ns]')
当您遍历系列中的项目时,会得到pandasTimestamps
而不是datetime64[ns]
s。
In [28]: df['month_15'].astype('datetime64[D]').tolist()
Out[28]: [Timestamp('2010-01-15 00:00:00'), Timestamp('2011-01-15 00:00:00')]
因此,尚不清楚Numba确实有问题datetime64[ns]
,也可能只是有问题Timestamps
。抱歉,我无法检查-我没有安装Numba。
但是,尝试一下可能会有用
testf(df['month_15'].astype('datetime64[D]').values)
因为df['month_15'].astype('datetime64[D]').values
确实是dtype的NumPy数组datetime64[ns]
:
In [31]: df['month_15'].astype('datetime64[D]').values.dtype
Out[31]: dtype('<M8[ns]')
如果可行,那么您不必将所有内容都转换为datetime64[D]
,只需要将NumPy数组(而不是Pandas Series)传递给testf
。