pandas.DataFrame.tz_localize
-
DataFrame.tz_localize(tz, axis=0, level=None, copy=True, ambiguous='raise', nonexistent='raise')[source] -
Локализация временной зоны для индекса Series или DataFrame без привязки к временной зоне.
Эта операция локализует индекс. Для локализации значений в Series без привязки к временной зоне используйте
Series.dt.tz_localize().Параметры: -
tz : string or pytz.timezone object -
axis : the axis to localize -
level : int, str, default None -
Если ось является MultiIndex, локализуется определенный уровень. В противном случае должно быть None
-
copy : boolean, default True -
Также создаётся копия базовых данных
-
ambiguous : ‘infer’, bool-ndarray, ‘NaT’, default ‘raise’ -
Когда часы переводятся назад из-за DST (перехода на летнее время), могут возникнуть неоднозначные моменты времени. Например, в Центрально-европейском времени (UTC+01), когда происходит переход с 03:00 DST на 02:00 стандартного времени, 02:30:00 местного времени соответствует как 00:30:00 UTC, так и 01:30:00 UTC. В такой ситуации параметр
ambiguousопределяет, как следует обрабатывать неоднозначные моменты времени.- ‘infer’ попытается определить часы перехода на зимнее время в соответствии с порядком
- булевый массив, где True означает время DST, а False — стандартное время (обратите внимание, что этот флаг применим только к неоднозначным моментам времени)
- ‘NaT’ вернёт NaT, если есть неоднозначные моменты времени
- ‘raise’ вызовет AmbiguousTimeError, если есть неоднозначные моменты времени
-
nonexistent : str, default ‘raise’ -
Несуществующее время не существует в конкретной временной зоне, когда часы переведены вперёд из-за DST. Допустимые значения:
- ‘shift_forward’ переместит несуществующее время вперёд к ближайшему существующему времени
- ‘shift_backward’ переместит несуществующее время назад к ближайшему существующему времени
- ‘NaT’ вернёт NaT, если есть несуществующие моменты времени
- объекты timedelta сместят несуществующие моменты времени на указанное значение timedelta
- ‘raise’ вызовет NonExistentTimeError, если есть несуществующие моменты времени
Новое в версии 0.24.0.
Возвращает: - Series или DataFrame
-
Тип такой же, как у входных данных.
Возможные исключения: - TypeError
-
Если TimeSeries имеет привязку к временной зоне, а 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. При последовательных данных pandas может определить время 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В некоторых случаях определить DST невозможно. В таких случаях вы можете передать массив ndarray в параметр ambiguous, чтобы явно указать время 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_backwards’. >>> 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 -
© 2008–2012, AQR Capital Management, LLC, Lambda Foundry, Inc. and PyData Development Team
Licensed under the 3-clause BSD License.
https://pandas.pydata.org/pandas-docs/version/0.24.2/reference/api/pandas.DataFrame.tz_localize.html