Umwandlung von Zeitzonen aus Pandas Zeitstempel

Ich habe folgendes in einem Dataframe:

> df['timestamps'].loc[0] Timestamp('2014-09-02 20:24:00') 

Ich kenne die Zeitzone (ich glaube, es ist GMT ) es benutzt und möchte die gesamte Spalte in EST umwandeln. Wie kann ich das in Pandas machen?

Als Referenz fand ich diese anderen Threads:

  • Ändern eines Unix-Zeitstempels in eine andere Zeitzone
  • Pandas: Lesen Sie den Zeitstempel aus CSV in GMT und dann erneut

Aber sie arbeiten mit datetime Zeitstempeln. Z.B:

 > datetime.datetime.fromtimestamp(df['timestamps'].loc[0], tz=None) returns: TypeError Traceback (most recent call last) ----> 2 datetime.datetime.fromtimestamp(ts, tz=None) TypeError: an integer is required (got type Timestamp) 

2 Solutions collect form web for “Umwandlung von Zeitzonen aus Pandas Zeitstempel”

Verwenden tz_convert einfach tz_convert Methode.

Lass uns sagen, du hast ein Timestamp-Objekt:

  stamp = Timestamp('1/1/2014 16:20', tz='America/Sao_Paulo') new_stamp = stamp.tz_convert('US/Eastern') 

Wenn Sie daran interessiert sind, Datumsbereiche umzuwandeln:

  range = date_range('1/1/2014', '1/1/2015', freq='S', tz='America/Sao_Paulo') new_range = range.tz_convert('US/Eastern') 

Für große Zeitreihen:

  import numpy as np ts = Series(np.random.randn(len(range)), range) new_ts = ts.tz_convert('US/Eastern') 

Wie in einer anderen Antwort angegeben, wenn deine Daten keine Zeitzone haben, musst du es tz_localize :

  data.tz_localize('utc') 

Datetime's fromtimestamp ist eigentlich von einem POSIX Zeitstempel dh ms von 1970-1-1 GMT

 In [11]: datetime.datetime.fromtimestamp? Type: builtin_function_or_method String form: <built-in method fromtimestamp of type object at 0x101d90500> Docstring: timestamp[, tz] -> tz's local time from POSIX timestamp. In [12]: datetime.datetime.fromtimestamp(0) Out[12]: datetime.datetime(1969, 12, 31, 16, 0) In [13]: datetime.datetime.fromtimestamp(1) Out[13]: datetime.datetime(1969, 12, 31, 16, 0, 1) 

Ich denke vielleicht ist ein Problem, wie ich in PST Zeitzone bin.

Das ist anders als pandas timestamp (obwohl unter der haube, die ns von 1970-1-1 ist).

 In [21]: pd.Timestamp(0) Out[21]: Timestamp('1970-01-01 00:00:00') 

Um eine Zeitstempel / datetime64 Spalte zu konvertieren, tz_convert verwenden (wenn die tz naive sind, also noch keine zeitzone haben musst du tz_localize zuerst):

 In [31]: pd.Timestamp(0).tz_localize('UTC') Out[31]: Timestamp('1970-01-01 00:00:00+0000', tz='UTC') In [32]: t = pd.Timestamp(0).tz_localize('UTC') In [33]: t.tz_convert('US/Eastern') Out[33]: Timestamp('1969-12-31 19:00:00-0500', tz='US/Eastern') 

Weitere Informationen finden Sie im Abschnitt "Zeitzone" .

  • Python - calendar.timegm () vs. time.mktime ()
  • Ändern eines Unix-Zeitstempels in eine andere Zeitzone
  • Berechnen Sie tm_isdst aus Datum und Zeitzone
  • Python: Zeigt die Zeit in einer anderen Zeitzone an
  • Python bekommt aktuelle Zeit in der rechten Zeitzone
  • Python: Wie bekomme ich einen Wert von datetime.today () das ist "timezone bewusst"?
  • Ist Python's time.time () den lokalen oder UTC-Zeitstempel zurück?
  • Python-Zeitzonenumwandlung
  • Ist Python's time.time () zeitzonenspezifisch?
  • Wie bekomme ich einen menschlich lesbaren Zeitzonennamen in Python?
  • Pytz und etc / GMT-5
  • Python ist die beste Programmiersprache der Welt.