Возможно ли преобразование из DatetimeIndex в datetime64 [s] через int без деления на 1e9? - PullRequest
1 голос
/ 29 марта 2019

Можно ли преобразовать массив DatetimeIndex в массив datetime64 [s] через массив int без деления на 1e9?

Следующий код предоставляет массив int numpy, но мне нужно разделить на 1e9, чтобы получить от наносекунд до секунд.

Можно ли пройти этот путь (DatetimeIndex, массив int numpy и, наконец, массив datetime64 [s]) без деления на 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 Ответ

1 голос
/ 29 марта 2019

Я думаю, что вы можете сделать это, изменив свой код. Вместо этого используйте astype ('datetime64 [s]').

datetimeIndexAs10e9int = datetimeIndex.values.astype('datetime64[s]')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...