Spec-Zone.ru › pandas 2

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API