2013-06-19 30 views
6

Tôi đang có một DataFrame với hai cột. Một cột được lấp đầy với dấu thời gian, cột kia chứa giá trị offset theo giờ UTC của dấu thời gian trong cùng một hàng.Làm thế nào để thiết lập bù đắp của timestamps trong một khung dữ liệu gấu trúc?

Các DataFrame trông như thế này:

In [44]: df 
Out[44]: 
        DATETIME OFFSET 

0 2013-01-01 00:00:00+00:00  1 
1 2013-01-01 01:00:00+00:00  1 
2 2013-01-01 02:00:00+00:00  1 
3 2013-01-01 03:00:00+00:00  1 
4 2013-01-01 04:00:00+00:00  1 
5 2013-01-01 05:00:00+00:00  1 
6 2013-01-01 06:00:00+00:00  2 
7 2013-01-01 07:00:00+00:00  2 
8 2013-01-01 08:00:00+00:00  2 

gì tôi muốn đạt được là thêm bù đắp cho mỗi hàng với timestamp:

In [44]: df 
Out[44]: 
        DATETIME OFFSET 

0 2013-01-01 00:00:00+01:00  1 
1 2013-01-01 01:00:00+01:00  1 
2 2013-01-01 02:00:00+01:00  1 
3 2013-01-01 03:00:00+01:00  1 
4 2013-01-01 04:00:00+01:00  1 
5 2013-01-01 05:00:00+01:00  1 
6 2013-01-01 06:00:00+02:00  2 
7 2013-01-01 07:00:00+02:00  2 
8 2013-01-01 08:00:00+02:00  2 

tôi đã cố gắng để thay thế với tzinfo nhưng thất bại để tìm một giải pháp thích hợp. Tôi đang suy nghĩ về điều gì đó như sau (mã giả):

df.apply(lambda x: x['DATETIME'].replace(tzinfo=pytz.utc + x['OFFSET']) 

Bất kỳ trợ giúp nào được đánh giá cao.

Cảm ơn, Thomas

+1

Có vẻ như bạn muốn làm 't1.tz_convert (9)' (nhưng điều này không hiệu quả!) –

Trả lời

6

Dường như pytz.FixedOffset phù hợp với mục đích này.

In [39]: df.apply(lambda x: pd.Timestamp(x['DATETIME'], tz=pytz.FixedOffset(60*x['OFFSET'])), axis=1) 
Out[39]: 
0 2013-01-01 00:00:00+01:00 
1 2013-01-01 01:00:00+01:00 
2 2013-01-01 02:00:00+01:00 
3 2013-01-01 03:00:00+01:00 
4 2013-01-01 04:00:00+01:00 
5 2013-01-01 05:00:00+01:00 
6 2013-01-01 06:00:00+02:00 
7 2013-01-01 07:00:00+02:00 
8 2013-01-01 08:00:00+02:00 
dtype: object 

Những người khác ở đây sử dụng chuỗi thời gian nhiều hơn tôi, vì vậy đây có thể không phải là phương pháp hay nhất.

+0

Cảm ơn Dan, hoạt động như một sự quyến rũ và đủ cho những gì tôi đang làm. – THM

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