Python的大熊猫转换Unix时间戳和时区到日期时间
问题描述:
我有一个数据帧:Python的大熊猫转换Unix时间戳和时区到日期时间
df = pd.DataFrame({'unix_utc_ts': [1503007204222, 1503007210206, 1503007215121,
1503007220475], 'tz': ['+0000', '+0100', 'CEST', 'EEST']})
我想转换Unix时间戳与时区的日期时间,所以我想是这样的:
df['local_ts'] = pd.to_datetime(df['unix_utc_ts'], unit='ms', tz=df['tz'])
上面的代码不起作用。如果没有tz
说法我得到这个:
tz unix_utc_ts utc_ts
0 +0000 1503007204222 2017-08-17 22:00:04.222
1 +0100 1503007210206 2017-08-17 22:00:10.206
2 CEST 1503007215121 2017-08-17 22:00:15.121
3 EEST 1503007220475 2017-08-17 22:00:20.475
但我当然希望被列入日期时间时区,所以我想这个数据帧:
tz unix_utc_ts utc_ts local_ts
0 +0000 1503007204222 2017-08-17 22:00:04.222 2017-08-17 22:00:04.222
1 +0100 1503007210206 2017-08-17 22:00:10.206 2017-08-17 23:00:10.206
2 CEST 1503007215121 2017-08-17 22:00:15.121 2017-08-18 00:00:15.121
3 EEST 1503007220475 2017-08-17 22:00:20.475 2017-08-18 01:00:20.475
我已经搜索并阅读了大量的问题计算器但没有找到任何工作答案:(
谢谢!
答
使用apply
和tz_localize
到E转换ACH行:
import pandas as pd
df = pd.DataFrame({'unix_utc_ts': [1503007204222, 1503007210206, 1503007215121,
1503007220475], 'tz': ['CEST', 'EEST', 'CEST', 'EEST']})
df['datetime_utc'] = pd.to_datetime(df['unix_utc_ts'], unit='ms')
df['datetime_local'] = df.apply(lambda x: x['datetime_utc'].tz_localize(x['tz']), axis=1)
但是,你将有一个问题,你的时区的格式。 Pytz用于映射时区字符串,并且列出的不匹配(here是我找到的列表)。所以你必须从时区名称到Pytz's进行映射。