pandas.Series.tz_localize
- Series.tz_localize(tz, axis=0, level=None, copy=None, ambiguous='raise', nonexistent='raise')[source]
-
Локализация индекса Series или DataFrame, не имеющего временной зоны, в целевую временную зону.
Эта операция локализует индекс. Чтобы локализовать значения в Series, не имеющей временной зоны, используйте
Series.dt.tz_localize().- Параметры:
-
- tz:str или tzinfo или None
-
Временная зона для локализации. Передача
Noneудалит информацию о временной зоне и сохранит местное время. - axis:{0 или ‘индекс’, 1 или ‘колонки’}, по умолчанию 0
-
Ось для локализации
- level:int, str, по умолчанию None
-
Если ось — MultiIndex, локализует определённый уровень. В противном случае должен быть None.
- copy:bool, по умолчанию True
-
Также создаёт копию базовых данных.
Примечание
Ключевое слово copy изменит поведение в pandas 3.0. Copy-on-Write будет включено по умолчанию, что означает, что все методы с ключевым словом copy будут использовать механизм ленивой копии для отсрочки копии и игнорирования ключевого слова copy. Ключевое слово copy будет удалено в будущей версии pandas.
Вы уже можете получить поведение и улучшения будущего через включение копирования при записи
pd.options.mode.copy_on_write = True - ambiguous:‘infer’, bool-массив, ‘NaT’, по умолчанию ‘raise’
-
Когда часы переводятся назад из-за DST, могут возникнуть неоднозначные моменты времени. Например, в Центральноевропейском времени (UTC+01), когда происходит переход от 03:00 DST к 02:00 non-DST, 02:30:00 местного времени происходит как в 00:30:00 UTC, так и в 01:30:00 UTC. В такой ситуации параметр ambiguous определяет, как следует обрабатывать неоднозначные моменты времени.
‘infer’ попытается определить часы перехода на зимнее время DST на основе порядка
bool-массив, где True обозначает время DST, False — время non-DST (обратите внимание, что этот флаг применим только для неоднозначных моментов времени)
‘NaT’ вернёт NaT, где есть неоднозначные моменты времени
‘raise’ сгенерирует исключение AmbiguousTimeError, если есть неоднозначные моменты времени.
- nonexistent:str, по умолчанию ‘raise’
-
Несуществующее время не существует в определённой временной зоне, когда часы переводятся вперёд из-за DST. Допустимые значения:
‘shift_forward’ сдвинет несуществующее время вперёд до ближайшего существующего времени
‘shift_backward’ сдвинет несуществующее время назад до ближайшего существующего времени
‘NaT’ вернёт NaT, где есть несуществующие моменты времени
объекты timedelta сдвинут несуществующие моменты времени на timedelta
‘raise’ сгенерирует исключение NonExistentTimeError, если есть несуществующие моменты времени.
- Возвращаемое значение:
-
- 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Передача None для преобразования в индекс без временной зоны и сохранения местного времени:
>>> s = pd.Series([1], ... index=pd.DatetimeIndex(['2018-09-15 01:30:00+02:00'])) >>> s.tz_localize(None) 2018-09-15 01:30: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_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
© 2008–2022, 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/2.2.2/reference/api/pandas.Series.tz_localize.html