Это сообщение было в течение 4 лет, и я все еще боролся с этой проблемой конверсии - так что проблема по-прежнему активна в 2017 году в некотором смысле. Я был несколько шокирован тем, что документация numpy не дает простого алгоритма преобразования, но это уже другая история.
Я столкнулся с другим способом преобразования, который включает только модули numpy
и datetime
, он не требует импортировать панды, которые, как мне кажется, содержат много кода для импорта для такого простого преобразования. Я заметил, что datetime64.astype(datetime.datetime)
вернет объект datetime.datetime
, если исходный datetime64
находится в микросекундах, в то время как другие единицы возвращают целую метку времени. Я использую модуль xarray
для ввода / вывода данных из файлов Netcdf, который использует datetime64
в наносекундах, что делает переход неудачным, если вы не впервые конвертируете в микросекунды. Вот пример кода преобразования,
import numpy as np
import datetime
def convert_datetime64_to_datetime( usert: np.datetime64 )->datetime.datetime:
t = np.datetime64( usert, 'us').astype(datetime.datetime)
return t
. Его единственный протестированный на моей машине, который представляет собой Python 3.6 с недавним дистрибутивом Anaconda 2017 года. Я только посмотрел на скалярное преобразование и не проверил преобразования на основе массива, хотя я предполагаю, что это будет хорошо. Я также не смотрел исходный код numpy datetime64, чтобы убедиться, что операция имеет смысл или нет.