将具有不同时区的时间戳添加到同一个DatetimeIndex 中会自动生成一个DatetimeIndex,其中UTC 作为默认时区。例如:
In [269] index = pandas.DatetimeIndex([Timestamp('2015-06-07 23:00:00+0100')])
In [270] index
Out[270] DatetimeIndex(['2015-06-07 23:00:00+01:00'], dtype='datetime64[ns, pytz.FixedOffset(60)]', freq=None)
In [271] index2 = DatetimeIndex([Timestamp('2015-06-08 00:01:00+0200')])
In [272] index2
Out[272] DatetimeIndex(['2015-06-08 00:01:00+02:00'], dtype='datetime64[ns, pytz.FixedOffset(120)]', freq=None)
In [273] index.append(index2) # returns single index containing both data
Out[273] DatetimeIndex(['2015-06-07 22:00:00+00:00', '2015-06-07 22:01:00+00:00'], dtype='datetime64[ns, UTC]', freq=None)
请注意,结果如何是 UTC DatetimeIndex,并保留了正确的 UTC 时间戳。
同样:
In [279] pandas.to_datetime([Timestamp('2015-06-07 23:00:00+0100'), Timestamp('2015-06-08 00:01:00+0200')], utc=True) # utc=True is needed
Out[279] DatetimeIndex(['2015-06-07 22:00:00+00:00', '2015-06-07 22:01:00+00:00'], dtype='datetime64[ns, UTC]', freq=None)
这不是一件坏事,因为您可以保留正确的时间,同时能够使用 DatetimeIndex 的索引能力(例如按日期范围切片),同时您可以轻松地将时间戳转换为任何其他时区(除非您真的需要知道每个时间戳的原始时区,否则这并不理想)。