假设我有一列国家/地区首字母缩写,将UTC时间列转换为本地化时间的最佳方法是什么?
例如
UTC Country
---------- | --------
1480597215 FR
1480544735 RU
到
UTC Country Localized time (example)
---------- | -------- ---------------
1480597215 FR datetime.datetime(2016, 12, 2, 0, 0, 15, tzinfo = FR)
1480544735 RU
我知道存在时区问题(例如,美国的不同部分位于不同的时区),但假设采用近似映射(例如,所有美国都遵循中心时间)
最好的方法是什么? pytz图书馆需要实际时区(例如'亚洲/马来西亚'),但我只有国家代码。
谢谢! :)
答案 0 :(得分:2)
您可以将to_datetime
+ tz_localize
用于10 to 30
日期时间,然后UTC
转换为时区:
apply
使用notnull
创建掩码,然后仅针对from pytz import country_timezones
df['date'] = pd.to_datetime(df['UTC'], unit='s').dt.tz_localize('UTC')
df['tz']=df.apply(lambda x: x['date'].tz_convert(country_timezones(x['Country'])[0]), axis=1)
print (df)
UTC Country date tz
0 1480597215 FR 2016-12-01 13:00:15+00:00 2016-12-01 14:00:15+01:00
1 1480544735 RU 2016-11-30 22:25:35+00:00 2016-12-01 00:25:35+02:00
s的值应用解决方案:
True
答案 1 :(得分:1)
您可以使用pytz的country_timezones:
SELECT
customer_id
,is_employee
,MIN(purchase_datetime) AS 'EarliestPurchase'
,MAX(purchase_datetime) AS 'LatestPurchase'
FROM tbl
GROUP BY customer_id, is_employee
请记住,pytz.country_timezones会返回与输入相关的可用时区列表。