无法使用通用单位创建除NaT以外的NumPy日期时间

cxfofazt  于 2022-12-29  发布在  其他
关注(0)|答案(1)|浏览(97)

我在使用loadtxt插入日期时遇到问题。

dt = np.dtype({'names':['name','height','year'],'formats':['U55','f4','datetime64']})

I = StringIO('Alice,1.75,2000-08-03')

txt = np.loadtxt(I,dtype = dt,delimiter = ',')
txt

当我尝试运行代码时,它返回以下错误:第一个月
我试图解决我在其他问题Python numpy loadtxt fails with date time中看到的问题,但我无法从matplitlib.dates导入strpdate2num来转换日期。

fhg3lkii

fhg3lkii1#

由于您使用的是ISO格式的日期,而不是转换器(链接问题),因此您需要指定一个单位,例如'days'(datetime64[D]),如果您要处理日期:

from io import StringIO
import numpy as np

dt = np.dtype(
    {"names": ["name", "height", "year"], "formats": ["U55", "f4", "datetime64[D]"]}
)

I = StringIO("Alice,1.75,2000-08-03")
txt = np.loadtxt(I, dtype=dt, delimiter=",")

txt
# ('Alice', 1.75, '2000-08-03')

txt.dtype
# dtype([('name', '<U55'), ('height', '<f4'), ('year', '<M8[D]')])

如果您不确定使用哪种单位,您可以使用更高精度的时间单位,例如us(微秒)或ns(纳秒)。注意,这将限制您可以用数据类型表示的日期/时间范围。

相关问题