我有两个datetime列,当我把它们读入记忆时,它们很幼稚,但实际上在美国/东部。我只想将这两列转换为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()
我最终得到:
呼叫结束呼叫开始结束
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
这是最好的方法吗?所有其他数据都在中心时间,所以我只想确保当我将文件合并到一起时,该文件也在中心时间。不过,我并不在乎在那里有实际的时区标记——在我创建新专栏之后,有没有一种方法可以轻松地去掉它
您不需要执行DatetimeIndex的往返,因为这些方法对于系列(列)以及通过dt访问器都是可用的:
aht['call_start']=aht['start'].dt.tz_本地化('US/Eastern')。dt.tz_转换('US/Central'))
对于结束
要删除时区信息但将其保留在本地时间,请在之后执行另一个.dt.tz_localize(None)(请参见此问题:https://stackoverflow.com/a/34687479/653364)