2013-06-19 22 views
6

我有一個DataFrame兩欄。一列填充時間戳,另一列包含同一行中時間戳的UTC時間偏移量。如何在熊貓數據框中設置時間戳的偏移量?

數據框看起來是這樣的:

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 

什麼,我想實現的是每行的偏移量添加到時間戳:

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 

我已經試圖取代tzinfo但失敗了找到一個合適的解決方案。我正在考慮類似如下(僞代碼):

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

任何幫助表示讚賞。

感謝, 托馬斯

+1

感覺就像你想做't1.tz_convert(9)'(但這不起作用!) –

回答

6

看起來pytz.FixedOffset符合這一目的。

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 

其他人在這裏使用時間序列比我多,所以這可能不是最佳實踐。

+0

感謝丹,作品像一個魅力,對我正在做的事情足夠了。 – THM

相關問題