这是一种矢量化方法(它将循环
df.time_zone.nunique()时间):
In [2]: tOut[2]: datetime time_zone0 2016-09-19 01:29:13 America/Bogota1 2016-09-19 02:16:04 America/New_York2 2016-09-19 01:57:54 Africa/Cairo3 2016-09-19 11:00:00 America/Bogota4 2016-09-19 12:00:00 America/New_York5 2016-09-19 13:00:00 Africa/CairoIn [3]: for tz in t.time_zone.unique(): ...: mask = (t.time_zone == tz) ...: t.loc[mask, 'datetime'] = ...: t.loc[mask, 'datetime'].dt.tz_localize(tz).dt.tz_convert('UTC') ...:In [4]: tOut[4]: datetime time_zone0 2016-09-19 06:29:13 America/Bogota1 2016-09-19 06:16:04 America/New_York2 2016-09-18 23:57:54 Africa/Cairo3 2016-09-19 16:00:00 America/Bogota4 2016-09-19 16:00:00 America/New_York5 2016-09-19 11:00:00 Africa/Cairo
更新:
In [12]: df['new'] = df.groupby('time_zone')['datetime'] .transform(lambda x: x.dt.tz_localize(x.name))In [13]: dfOut[13]: datetime time_zone new0 2016-09-19 01:29:13 America/Bogota 2016-09-19 06:29:131 2016-09-19 02:16:04 America/New_York 2016-09-19 06:16:042 2016-09-19 01:57:54 Africa/Cairo 2016-09-18 23:57:543 2016-09-19 11:00:00 America/Bogota 2016-09-19 16:00:004 2016-09-19 12:00:00 America/New_York 2016-09-19 16:00:005 2016-09-19 13:00:00 Africa/Cairo 2016-09-19 11:00:00
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)