Python 如何转换列的时区
在我的pandas数据框中,我需要将创建的列从UTC时间转换为亚洲/香港时间(相差8小时)。我需要使用pytz,而不是声明+8小时。我知道dt可以实现这一点,但是对于这个脚本,不能使用新版本的pandasPython 如何转换列的时区,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 我能够本地化创建的列,但是我在转换部分没有任何运气
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”(使用较旧的熊猫版本)