#python #pandas #numpy
#python #pandas #numpy
Вопрос:
Возможно ли преобразовать из DatetimeIndex в массив datetime64 [s] через массив int без деления на 1e9?
Следующий код выдает числовой массив int, но я должен разделить на 1e9
, чтобы получить от наносекунд до секунд.
Возможно ли проделать этот путь (DatetimeIndex, массив numpy int и, наконец, массив datetime64 [s] numpy) без деления на 1e9
?
import pandas as pd
import numpy as np
start = pd.Timestamp('2015-07-01')
end = pd.Timestamp('2015-07-05')
t = np.linspace(start.value, end.value, 5)
datetimeIndex = pd.to_datetime(t)
'''type: DatetimeIndex'''
datetimeIndex
Out[2]:
DatetimeIndex(['2015-07-01', '2015-07-02', '2015-07-03', '2015-07-04',
'2015-07-05'],
dtype='datetime64[ns]', freq=None)
datetimeIndexAs10e9int = datetimeIndex.values.astype(np.int64)
'''datetimeIndexAs10e9int - like [1435708800000000000]'''
datetimeIndexAs10e9int
Out[3]:
array([1435708800000000000, 1435795200000000000, 1435881600000000000,
1435968000000000000, 1436054400000000000])
datetime = (1/1e9*datetimeIndexAs10e9int).astype(np.float).astype('datetime64[s]')
datetime
Out[4]:
array(['2015-07-01T00:00:00', '2015-07-02T00:00:00',
'2015-07-03T00:00:00', '2015-07-04T00:00:00',
'2015-07-05T00:00:00'], dtype='datetime64[s]')
Ответ №1:
Я думаю, вы можете сделать это, изменив свой код. Вместо этого используйте astype(‘datetime64[s]’).
datetimeIndexAs10e9int = datetimeIndex.values.astype('datetime64[s]')
Комментарии:
1. Спасибо за ваш ответ. Да, с этим я могу достичь своего окончательного формата. Это правда. Но моим намерением было иметь массив int также в качестве промежуточного значения (в формате
array([1435708800, 1435795200, 1435881600, 1435968000, 1436054400])