pandas使用单独的时区列转换日期时间

pandas使用单独的时区列转换日期时间,第1张

pandas使用单独的时区列转换日期时间

这是一种矢量化方法(它将循环

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


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/zaji/5630567.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存