Es gibt eine Route ohne Pandas; aber siehe unten.
Nun, die t
Variable hat eine Auflösung von Nanosekunden, die durch Inspektion in Python dargestellt werden können:
>>> numpy.dtype(t)
dtype('<M8[ns]')
Dies bedeutet, dass der Integralwert dieses Wertes 10^9-fache des UNIX-Zeitstempel. Der Wert in Ihrer Frage gibt diesen Hinweis. Ihre beste Wette ist der Integralwert von t
von 1 teilen Milliarden, dann können Sie verwenden time.strftime
:
>>> import time
>>> time.strftime("%Y.%m.%d", time.gmtime(t.astype(int)/1000000000))
2012.07.01
In dieser Verwendung bewusst sein, zwei Annahmen:
1) die datetime64 Auflösung von Nanosekunden
2) die in datetime64 gespeicherte Zeit ist in UTC
Exkurs 1: Interessanterweise sind die numpy Entwickler entschieden [1], dass datetime64
Objekt, das eine Auflösung größer als Mikrosekunde hat, wird in einen long
Typ umgewandelt, was erklärt, warum t.astype(datetime.datetime)
1341100800000000000L
ergibt. Der Grund dafür ist, dass das datetime.datetime
Objekt nicht genau eine Nanosekunden- oder feinere Zeitskala darstellen kann, da die von datetime.datetime
unterstützte Auflösung nur Mikrosekunden beträgt.
Exkurs 2: die verschiedenen Konventionen zwischen numpy 1.10 Vorsicht und früher vs 1.11 und höher:
in numpy < = 1,10, wird datetime64 intern als UTC gespeichert und als lokale Zeit gedruckt. Das Parsen setzt lokale Zeit voraus, wenn kein TZ angegeben ist, andernfalls wird der Zeitzonen-Offset berücksichtigt.
In numpy> = 1.11 wird datetime64 intern als Zeitzonen-unabhängiger Wert (Sekunden seit 1970-01-01 00:00 in unspezifizierter Zeitzone) gespeichert und als solcher gedruckt. Die Zeitanalyse geht nicht von der Zeitzone aus, obwohl die Zeitzonenverschiebung +NNNN
weiterhin zulässig ist und der Wert in UTC konvertiert wird.
[1]: https://github.com/numpy/numpy/blob/master/numpy/core/src/multiarray/datetime.c siehe Routine convert_datetime_to_pyobject
.
Does http://stackoverflow.com/questions/13703720/ converting-between datetime-timestamp-and-datetime64 hilft Ihr spezifisches Problem? –
Danke, Lösung war: import pandas als pd \t ts = pd.to_datetime (str (Datum)) \t d = ts.strftime ('%. Y.% m% d') –