我有一个数据框,我想将其转换为一个numpy记录数组。 df.to_records()正常工作,除了其中一列具有datetime值的列。由于df.to_records()我得到:

[(1275264000000000000L, 9912.0, 58450.0, 1036, 136.0, 15.0)
 (1275264000000000000L, 9912.0, 155471.0, 1033, 1033.0, 15.0)
 (1275264000000000000L, 9912.0, 166784.0, 1011, 111.0, 2.0)
 (1275264000000000000L, 9912.0, 166798.0, 10106, 1111.0, 12.0)]


每个元组中的第一个值应该是日期,但它们是别的。他们的日期类型是'<M8[ns]'(我不知道这是什么意思)。

有人知道如何获取包含日期的记录数组吗?

最佳答案

这只是一个表示:

>>> df
                    0     1
0 2010-05-31 00:00:00  9912
1 2010-05-31 00:00:00  9912
>>> df.to_records()
rec.array([(0L, 1275264000000000000L, 9912.0),
           (1L, 1275264000000000000L, 9912.0)],
      dtype=[('index', '<i8'), ('0', '<M8[ns]'), ('1', '<f8')])




>>> df.to_records()[0][1]
numpy.datetime64('2010-05-31T04:00:00.000000000+0400')


类型<M8[ns]是numpy的datetime类型之一,ns代表自纪元以来以纳秒为单位存储数据。

>>> np.datetime64().dtype
dtype('<M8')

10-05 18:27