2017-03-17 141 views
1

在我的熊貓數據框中,我需要將UTC時間的CREATED列轉換爲亞洲/香港(8小時差)。我需要使用pytz,而不是聲明+ 8小時。我知道dt可以做到這一點,但是這個腳本不能使用新版熊貓。熊貓如何轉換列的時區

ID   CREATED 
234   2017-03-16 17:18:20 
720   2017-03-15 22:09:13  
639   2017-03-16 04:49:12 

我能夠本地化創建列,但我沒有在轉換一部分的任何運氣。

import pytz 
tz_utc = pytz.timezone('UTC') 
tz_hkg = pytz.timezone('Asia/Hong_Kong') 

def localize_utc(x): 
    if not isinstance(x, pd.tslib.NaTType): 
     return tz_utc.localize(x) 
    return None 

df['CREATED'] = df['CREATED'].apply(lambda x: localize_utc(x)) 

任何幫助非常感謝!

回答

3

假設我們有以下DF:

In [31]: df 
Out[31]: 
    ID    CREATED 
0 234 2017-03-16 17:18:20 
1 720 2017-03-15 22:09:13 
2 639 2017-03-16 04:49:12 

我們可以將TZ如下:

In [32]: df['CREATED'].dt.tz_localize('UTC').dt.tz_convert('Asia/Hong_Kong') 
Out[32]: 
0 2017-03-17 01:18:20+08:00 
1 2017-03-16 06:09:13+08:00 
2 2017-03-16 12:49:12+08:00 
Name: CREATED, dtype: datetime64[ns, Asia/Hong_Kong] 
+0

是這樣的作品,但我想看看,如果我能做到這一點不「DT」 (使用較老的熊貓版本) – Ariel