Python 如何转换列的时区

Python 如何转换列的时区,python,pandas,Python,Pandas,在我的pandas数据框中,我需要将创建的列从UTC时间转换为亚洲/香港时间(相差8小时)。我需要使用pytz,而不是声明+8小时。我知道dt可以实现这一点,但是对于这个脚本,不能使用新版本的pandas ID CREATED 234 2017-03-16 17:18:20 720 2017-03-15 22:09:13 639 2017-03-16 04:49:12 我能够本地化创建的列,但是我在转换部分没有任何运气

在我的pandas数据框中,我需要将创建的列从UTC时间转换为亚洲/香港时间(相差8小时)。我需要使用pytz,而不是声明+8小时。我知道dt可以实现这一点,但是对于这个脚本,不能使用新版本的pandas

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))

非常感谢您的帮助

假设我们有以下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]

是的,这是可行的,但是我想看看我是否可以不使用“dt”(使用较旧的熊猫版本)