2012-12-22 40 views
6

Tôi có một dòng gấu trúc với giá trị của loại datetime64[ns]. Các ngày trong múi giờ EST và tôi muốn chuyển đổi chúng thành múi giờ UTC.Làm thế nào để chuyển đổi múi giờ của các giá trị của một Pandas Dòng

Ví dụ:

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

Làm thế nào để chuyển đổi s để UTC?

(Lưu ý rằng tôi không thực sự sử dụng date_range() nên sử dụng tham số tz của nó không phải là một lựa chọn.)

Trả lời

7

Cập nhật: Trong gấu trúc gần đây, bạn có thể sử dụng accessor dt để phát sóng này:

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] 

Dưới đây là một cách (tùy nếu tz đã được thiết lập nó có thể là một tz_convert hơn 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

Tác phẩm này hoạt động nhưng rất chậm. Có cách nào để phát sóng không? –

+1

Có! Sử dụng 's.dt.tz_localize' (điều này không có sẵn trong năm 2012 :)) –

+0

bạn có thể đăng bài đó làm câu trả lời mới để tôi có thể bỏ phiếu không? –

Các vấn đề liên quan