2012-12-22 10 views
6

Mam serię pand z wartościami typu datetime64[ns]. Daty są w strefie czasowej EST i chciałbym je przekształcić w strefę czasową UTC.Jak przekonwertować strefę czasową wartości serii Pandas

np

s=pd.Series(pd.date_range('2012-1-1 1:30',periods=3,freq='min')) 

Jak przekonwertować s UTC?

(uwaga, że ​​w rzeczywistości nie używać date_range() więc używając jego tz parametr nie jest rozwiązaniem.)

Odpowiedz

7

Aktualizacja: W ostatnich pand, można użyć akcesor dt nadawać to:

In [11]: s.dt.tz_localize('UTC') 
Out[11]: 
0 2012-01-01 01:30:00+00:00 
1 2012-01-01 01:31:00+00:00 
2 2012-01-01 01:32:00+00:00 
dtype: datetime64[ns, UTC] 

Oto jeden ze sposobów (w zależności czy tz jest już ustawiony może być tz_convert zamiast tz_localize):

In [21]: from pandas.lib import Timestamp 

In [22]: s.apply(lambda x: x.tz_localize('UTC')) 
Out[22]: 
0 2012-01-01 06:30:00+00:00 
1 2012-01-01 06:31:00+00:00 
2 2012-01-01 06:32:00+00:00 
+0

To działa, ale jest naprawdę powolne. Czy nie ma na to sposobu emisji? –

+1

Tak! Użyj 's.dt.tz_localize' (to nie było dostępne w 2012 roku :)) –

+0

czy możesz to opublikować jako nową odpowiedź, abym mógł ją głosować? –

Powiązane problemy