如何从pandas dataframe获取带有日期的记录numpy数组?

时间:2013-12-16 10:41:52

标签: python arrays numpy pandas dataframe

我有一个数据框,我想将其转换为numpy记录数组。 df.to_records()工作正常,但我有一个日期时间值的列。由于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]'(我不知道这意味着什么)。

有谁知道如何获得包含日期的记录数组?

1 个答案:

答案 0 :(得分:3)

这仅仅是一种表现形式:

>>> 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')