尝试在python中实现时间序列预测模型,但面临日期时间数据的问题。
所以我有一个数据框' df'有两列datetime和float类型:
然后我尝试使用values方法构建一个数组。但是smth奇怪的发生了,它以奇怪的格式显示日期,包括时间戳和时间:
基本上因为它,我无法实现接收以下消息的模型,例如:"无法在没有频率的情况下向Timestamp添加整数值。"
那么似乎是什么问题以及如何解决?
答案 0 :(得分:1)
这很复杂。
首先,在创建numpy
数组时,所有类型都是相同的。但是,datetime64
与int
不同。所以我们必须解决这个问题,我们会这样做。
其次,您尝试使用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