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