La conversion entre datetime, Timestamp et datetime64

Comment puis-je convertir un numpy.datetime64 objet d'un datetime.datetime (ou Timestamp)?

Dans le code suivant, j'ai créer un datetime, timestamp et datetime64 objets.

import datetime
import numpy as np
import pandas as pd
dt = datetime.datetime(2012, 5, 1)
# A strange way to extract a Timestamp object, there's surely a better way?
ts = pd.DatetimeIndex([dt])[0]
dt64 = np.datetime64(dt)

In [7]: dt
Out[7]: datetime.datetime(2012, 5, 1, 0, 0)

In [8]: ts
Out[8]: <Timestamp: 2012-05-01 00:00:00>

In [9]: dt64
Out[9]: numpy.datetime64('2012-05-01T01:00:00.000000+0100')

Remarque: il est facile d'obtenir la date de l'Horodatage:

In [10]: ts.to_datetime()
Out[10]: datetime.datetime(2012, 5, 1, 0, 0)

Mais comment pouvons-nous extraire les datetime ou Timestamp à partir d'un numpy.datetime64 (dt64)?

.

Mise à jour: un peu méchant exemple dans ma base de données (peut-être la motivation exemple) semble être:

dt64 = numpy.datetime64('2002-06-28T01:00:00.000000000+0100')

qui devrait être datetime.datetime(2002, 6, 28, 1, 0), et non pas une longue (!) (1025222400000000000L)...

  • vous devriez probablement accepter @Wes McKinney réponse qui est beaucoup plus courte et devrait fonctionner sur les récentes numpy, pandas versions.
  • Hmmm, est-ce à dire que la réponse est "ne pas bouger de np.datetime datetime"... il suffit d'utiliser la mp.Timestamp (comme c'est une sous-classe de datetime de toute façon), ou si vous devez vraiment utiliser pd.Timestamp(dt64).to_datetime(). Je suis toujours un peu insatisfaits sur ce sujet, mais certainement de Wes est moins spécifique à mon ancien problème (pour le monde)! Merci encore de prendre le temps de répondre. 🙂
  • Votre question dit "ou Timestamp" et Timestamp est un datetime (une sous-classe) de toute façon 🙂
  • Pour ceux qui viennent à cette question en 2017+, regarde ma réponse ci-dessous pour un tutoriel détaillé de datetime, datetime64 et les Horodatages: stackoverflow.com/a/46921593/3707607
InformationsquelleAutor Andy Hayden | 2012-12-04