在Pandas

时间:2017-06-09 18:03:34

标签: python pandas datetime time

尝试在python中实现时间序列预测模型,但面临日期时间数据的问题。

所以我有一个数据框' df'有两列datetime和float类型:

enter image description here

然后我尝试使用values方法构建一个数组。但是smth奇怪的发生了,它以奇怪的格式显示日期,包括时间戳和时间:

enter image description here

基本上因为它,我无法实现接收以下消息的模型,例如:"无法在没有频率的情况下向Timestamp添加整数值。"

那么似乎是什么问题以及如何解决?

2 个答案:

答案 0 :(得分:1)

这很复杂。

首先,在创建numpy数组时,所有类型都是相同的。但是,datetime64int不同。所以我们必须解决这个问题,我们会这样做。

其次,您尝试使用df.values执行此操作。然而,有意义的是,pandas将整个df转换为dtype=object然后转换为object数组。问题在于,Timestamps会被Timestamps留下,这会挡住你的路。

所以我会像我一样自己转换它们

a = np.column_stack([df[c].values.astype(int) for c in ['transaction_date', 'amount']])

a

array([[1454284800000000000,                   1],
       [1454371200000000000,                   2],
       [1454457600000000000,                   3],
       [1454544000000000000,                   4],
       [1454630400000000000,                   5]])

我们总是可以像这样转换后面的第一列

a[:, 0].astype(df.transaction_date.values.dtype)

array(['2016-02-01T00:00:00.000000000', '2016-02-02T00:00:00.000000000',
       '2016-02-03T00:00:00.000000000', '2016-02-04T00:00:00.000000000',
       '2016-02-05T00:00:00.000000000'], dtype='datetime64[ns]')

答案 1 :(得分:-1)

您可以将整数转换为timedelta,并按照之前的计算进行计算:

from datetime import timedelta

interval = timedelta(days = 5)

#5 days later
time_stamp += interval