DataFrame.tz_localize(tz, axis=0, level=None, copy=True, ambiguous='raise', nonexistent='raise') [source]
将Series或DataFrame的Localize tz-naive索引到目标时区。
此操作将对索引进行本地化。使用Series.dt.tz_localize()将时间区域Series中的值本地化。
参数: | tz : 移动的周期数,可以是正的,也可以是负的。 axis :要 localize的轴 level : 如果axis是多索引,则转换特定级别。否则,一定为 copy : 是否要复制基础数据。 ambiguous : 默认为 当时钟由于DST而向后移动时,可能会产生不明确的时间。 例如,在中欧时间( 从夏令时 本地时间 发生在世界标准时间 和 在这种情况下, 歧义参数指示应该如何处理歧义时间。 ● ● False表示非DST时间 (请注意,此标志仅适用于不明确的时间) ●如果时间不明确, ●如果存在不明确的时间, nonexistent : 在特定时区中不存在不存在的时间, 在该特定时区中时钟由于DST而向前移动。有效值为: ● ● ●如果没有时间, ● ●如果不存在时间, 0.24.0版中的新功能。 |
返回值: | Series 或 DataFrame 与输入类型相同。 |
Raises: | TypeError 如果TimeSeries为tz-aware,而tz不是None。 |
例子
本地化本地时间:
>>> s = pd.Series([1], ... index=pd.DatetimeIndex(['2018-09-15 01:30:00'])) >>> s.tz_localize('CET') 2018-09-15 01:30:00+02:00 1 dtype: int64
请注意DST更改。有顺序数据时,熊猫可以推断出夏令时时间:
>>> s = pd.Series(range(7), ... index=pd.DatetimeIndex(['2018-10-28 01:30:00', ... '2018-10-28 02:00:00', ... '2018-10-28 02:30:00', ... '2018-10-28 02:00:00', ... '2018-10-28 02:30:00', ... '2018-10-28 03:00:00', ... '2018-10-28 03:30:00'])) >>> s.tz_localize('CET', ambiguous='infer') 2018-10-28 01:30:00+02:00 0 2018-10-28 02:00:00+02:00 1 2018-10-28 02:30:00+02:00 2 2018-10-28 02:00:00+01:00 3 2018-10-28 02:30:00+01:00 4 2018-10-28 03:00:00+01:00 5 2018-10-28 03:30:00+01:00 6 dtype: int64
在某些情况下,无法推断出夏令时。在这种情况下,您可以将ndarray传递给歧义参数以显式设置DST
>>> s = pd.Series(range(3), ... index=pd.DatetimeIndex(['2018-10-28 01:20:00', ... '2018-10-28 02:36:00', ... '2018-10-28 03:46:00'])) >>> s.tz_localize('CET', ambiguous=np.array([True, True, False])) 2018-10-28 01:20:00+02:00 0 2018-10-28 02:36:00+02:00 1 2018-10-28 03:46:00+01:00 2 dtype: int64
如果DST过渡导致不存在时间,则可以使用timedelta
对象或'shift_forward'
或'shift_backward'
将这些日期向前或向后移动。
>>> s = pd.Series(range(2), ... index=pd.DatetimeIndex(['2015-03-29 02:30:00', ... '2015-03-29 03:30:00'])) >>> s.tz_localize('Europe/Warsaw', nonexistent='shift_forward') 2015-03-29 03:00:00+02:00 0 2015-03-29 03:30:00+02:00 1 dtype: int64 >>> s.tz_localize('Europe/Warsaw', nonexistent='shift_backward') 2015-03-29 01:59:59.999999999+01:00 0 2015-03-29 03:30:00+02:00 1 dtype: int64 >>> s.tz_localize('Europe/Warsaw', nonexistent=pd.Timedelta('1H')) 2015-03-29 03:30:00+02:00 0 2015-03-29 03:30:00+02:00 1 dtype: int64