如果我定義Timestamp
作爲numpy
日期時間D型:
In [43]: Timestamp=np.datetime64
然後我可以複製正粘貼example
:
In [44]: example = np.array([[Timestamp('2005-03-06 17:00:00'), 1225.75, 1226.25 , 1225.0, 1225.5, 1668.0],
...: [Timestamp('2005-03-06 17:30:00'), 1225.75, 1227.5, 1225.75, 1227.0, 1603.0],
...: [Timestamp('2005-03-06 18:00:00'), 1227.0, 1227.5, 1226.75, 1227.25, 590.0]], dtype=object)
請注意,此ar射線dtype
object
In [45]: example
Out[45]:
array([[numpy.datetime64('2005-03-06T17:00:00'), 1225.75, 1226.25, 1225.0,1225.5, 1668.0],
[numpy.datetime64('2005-03-06T17:30:00'), 1225.75, 1227.5, 1225.75, 1227.0, 1603.0],
[numpy.datetime64('2005-03-06T18:00:00'), 1227.0, 1227.5, 1226.75, 1227.25, 590.0]], dtype=object)
的第一列是:
In [46]: example[:,0]
Out[46]:
array([numpy.datetime64('2005-03-06T17:00:00'),
numpy.datetime64('2005-03-06T17:30:00'),
numpy.datetime64('2005-03-06T18:00:00')], dtype=object)
可被轉化到datetime64
元件的陣列:
In [47]: example[:,0].astype(np.datetime64)
Out[47]: array(['2005-03-06T17:00:00', '2005-03-06T17:30:00', '2005-03-06T18:00:00'], dtype='datetime64[s]')
tolist
對於這種類型的陣列的轉換元件到datetime
對象:
In [48]: example[:,0].astype(np.datetime64).tolist()
Out[48]:
[datetime.datetime(2005, 3, 6, 17, 0),
datetime.datetime(2005, 3, 6, 17, 30),
datetime.datetime(2005, 3, 6, 18, 0)]
另外,掠的pandas.Timestamp
功能
In [50]: Timestamp = pd.Timestamp
In [52]: example
Out[52]:
array([[Timestamp('2005-03-06 17:00:00'), 1225.75, 1226.25, 1225.0, 1225.5, 1668.0],
[Timestamp('2005-03-06 17:30:00'), 1225.75, 1227.5, 1225.75, 1227.0, 1603.0],
[Timestamp('2005-03-06 18:00:00'), 1227.0, 1227.5, 1226.75, 1227.25, 590.0]], dtype=object)
In [64]: ts = example[:,0]
In [65]: ts
Out[65]:
array([Timestamp('2005-03-06 17:00:00'), Timestamp('2005-03-06 17:30:00'), Timestamp('2005-03-06 18:00:00')], dtype=object)
時間戳的迭代轉換對象
In [67]: np.array([t.to_datetime() for t in ts])
Out[67]:
array([datetime.datetime(2005, 3, 6, 17, 0),
datetime.datetime(2005, 3, 6, 17, 30),
datetime.datetime(2005, 3, 6, 18, 0)], dtype=object)
但我發現,astype
作品與Timestamp
對象:
In [73]: ts = example[:,0]
In [74]: ts.astype('datetime64[s]')
Out[74]: array(['2005-03-06T17:00:00', '2005-03-06T17:30:00', '2005-03-06T18:00:00'], dtype='datetime64[s]')
,所以我可以使用tolist
做轉換在一個行:
In [75]: ts.astype('datetime64[s]').tolist()
Out[75]:
[datetime.datetime(2005, 3, 6, 17, 0),
datetime.datetime(2005, 3, 6, 17, 30),
datetime.datetime(2005, 3, 6, 18, 0)]
我不會形容這是一個最終的解決方案,但它給你的使用日期如何numpy
交易的想法。
對於數組數學,我會堅持使用datetime64
dtype。要保留在一個陣列中以及浮點數example[:,1:]
必須使用結構化數組。
=================
與副本進行實驗:
In [80]: ex1 = example.copy()
In [82]: ex1[:,0] = example[:,0].astype('datetime64[s]').tolist()
In [83]: ex1
Out[83]:
array([[datetime.datetime(2005, 3, 6, 17, 0), 1225.75, 1226.25, 1225.0, 1225.5, 1668.0],
[datetime.datetime(2005, 3, 6, 17, 30), 1225.75, 1227.5, 1225.75, 1227.0, 1603.0],
[datetime.datetime(2005, 3, 6, 18, 0), 1227.0, 1227.5, 1226.75, 1227.25, 590.0]],
dtype=object)
在你的''example'沒有定義Timestamp'。你能澄清嗎? –
我的意思是我想將'Timestamp('2005-03-06 18:00:00')'這樣的值轉換爲諸如'datetime.datetime(2005,3,6,17,0)這樣的值' 。 –
我認爲@ JoeT.Boka問的是「你從哪裏得到'Timestamp'類?」,如果我錯了,請糾正我。 – Dekel