pandas.Series.tz_localize#

Series.tz_localize(tz, ось=0, уровень=None, copy=None, неоднозначный='raise', несуществующий='raise')[источник]#

Локализует индекс Series или DataFrame без часового пояса в целевой часовой пояс.

Эта операция локализует индекс. Чтобы локализовать значения в серии без часового пояса, используйте Series.dt.tz_localize().

Параметры:
tzstr или tzinfo или None

Часовой пояс для локализации. Передача None удалит информацию о часовом поясе и сохранит местное время.

ось{0 или 'index', 1 или 'columns'}, по умолчанию 0

Ось для локализации

уровеньint, str, default None

Если axis является MultiIndex, локализуйте конкретный уровень. В противном случае должно быть None.

copybool, по умолчанию True

Также создайте копию базовых данных.

Примечание

The copy ключевое слово изменит поведение в pandas 3.0. Копирование при записи будет включено по умолчанию, что означает, что все методы с copy ключевое слово будет использовать механизм ленивого копирования для отложенного копирования и игнорирования copy ключевое слово. The copy ключевое слово будет удалено в будущей версии pandas.

Вы уже можете получить будущее поведение и улучшения, включив copy on write pd.options.mode.copy_on_write = True

неоднозначный‘infer’, bool-ndarray, ‘NaT’, по умолчанию ‘raise’

Когда часы переводятся назад из-за летнего времени, могут возникать неоднозначные времена. Например, в Центральноевропейском времени (UTC+01), при переходе с 03:00 летнего времени на 02:00 стандартного времени, локальное время 02:30:00 встречается как в 00:30:00 UTC, так и в 01:30:00 UTC. В такой ситуации неоднозначный параметр определяет, как следует обрабатывать неоднозначные времена.

  • 'infer' попытается определить часы перехода на летнее время на основе порядка

  • bool-ndarray, где True означает время летнего времени, False обозначает время не летнего времени (обратите внимание, что этот флаг применим только для неоднозначных времён)

  • ‘NaT’ вернет NaT там, где есть неоднозначные времена

  • 'raise' вызовет AmbiguousTimeError, если есть неоднозначные времена.

несуществующийstr, по умолчанию ‘raise’

Несуществующее время отсутствует в определенном часовом поясе, где часы перевели вперед из-за летнего времени. Допустимые значения:

  • '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

Будьте осторожны с изменениями летнего времени. При наличии последовательных данных pandas может определить время летнего времени:

>>> 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 в параметр ambiguous, чтобы явно установить летнее время

>>> 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

Если переход на летнее время вызывает несуществующие времена, вы можете сдвинуть эти даты вперед или назад с помощью объекта 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