UTC到给定国家/地区首字母的本地化时间

时间:2017-05-16 13:10:06

标签: python pandas datetime timezone

假设我有一列国家/地区首字母缩写,将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图书馆需要实际时区(例如'亚洲/马来西亚'),但我只有国家代码。

谢谢! :)

2 个答案:

答案 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会返回与输入相关的可用时区列表。