将日期时间列转换为其他时区Pandas

2024-04-26 00:01:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个datetime列,当我将它们读入内存时,它们很幼稚,但实际上是在US/Eastern中。我只想将这两个列转换为US/Central。

我找到了一个可行的方法,但似乎我在做一个变通的办法。 我将call_start和call_end列改为“start”和“end”,这样就不会出现重复的列名。然后,我为这些列中的每一列创建了一个单独的datetimeindex并重置了该索引。

aht.set_index(pd.DatetimeIndex(aht['start']).tz_localize('US/Eastern').tz_convert('US/Central'), inplace = True, drop = True)
aht.index.names = ['call_start']
aht = aht.reset_index()
aht.set_index(pd.DatetimeIndex(aht['end']).tz_localize('US/Eastern').tz_convert('US/Central'), inplace = True, drop = True)
aht.index.names = ['call_end']
aht = aht.reset_index()

我最终得到:

call_end    call_start  start   end
2016-01-13 06:05:01-06:00   2016-01-13 06:02:00-06:00   01/13/2016 07:02    01/13/2016 07:05
2016-01-13 06:07:00-06:00   2016-01-13 06:03:16-06:00   01/13/2016 07:03    01/13/2016 07:07
2016-01-13 06:09:13-06:00   2016-01-13 06:06:02-06:00   01/13/2016 07:06    01/13/2016 07:09
2016-01-13 06:17:51-06:00   2016-01-13 06:06:20-06:00   01/13/2016 07:06    01/13/2016 07:17

这是最好的方法吗?所有其他数据都在中心时间,所以我只想确保这个文件也是如此,所以当我合并文件在一起时,它更有意义。不过,我不在乎在那里有真正的时区戳——有没有办法在我创建新列后轻松删除它?


Tags: 方法trueindexcallstarttzendpd
1条回答
网友
1楼 · 发布于 2024-04-26 00:01:58

您不需要往返于DatetimeIndex,因为这些方法对于序列(列)以及通过dt访问器都是可用的:

aht['call_start'] = aht['start'].dt.tz_localize('US/Eastern').dt.tz_convert('US/Central')

end也是一样 若要删除时区信息,但将其保留在本地时间,请在之后执行另一个.dt.tz_localize(None)(请参见此问题:https://stackoverflow.com/a/34687479/653364

相关问题 更多 >