您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Python numpy:无法将datetime64 [ns]转换为datetime64 [D](与Numba一起使用)

Python numpy:无法将datetime64 [ns]转换为datetime64 [D](与Numba一起使用)

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

python 2022/1/1 18:25:06 有609人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶