2012-12-22 16 views
6

Ho una serie panda con valori di tipo datetime64[ns]. Le date sono nel fuso orario EST e vorrei convertirle in fuso orario UTC.Come convertire il fuso orario dei valori di una serie Pandas

esempio

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

Come convertire s a UTC?

(Si noti che io in realtà non lo uso date_range() in modo da utilizzare il suo parametro tz non è un'opzione.)

risposta

7

Aggiornamento: Negli ultimi panda, è possibile utilizzare la funzione di accesso dt per trasmettere questo:

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] 

Ecco un modo (a seconda se tz è già impostato potrebbe essere una tz_convert piuttosto che 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

Questo funziona, ma è molto lento. Non esiste un modo basato sulla trasmissione per farlo? –

+1

Sì! Usa 's.dt.tz_localize' (non era disponibile nel 2012 :)) –

+0

potresti postarla come una nuova risposta in modo da poterla votare? –

Problemi correlati