pandas.DatetimeIndex.tz_localize
- DatetimeIndex.tz_localize(tz, ambiguous='raise', nonexistent='raise')[source]
-
Локализация часового пояса для Datetime Array/Index без часового пояса в Datetime Array/Index с часовым поясом.
Этот метод принимает объект Datetime Array/Index без часового пояса и делает его часовым. Он не перемещает время в другой часовой пояс.
Этот метод также может быть использован для обратного преобразования – для создания объекта без часового пояса из объекта с часовым поясом. Для этого передайте tz=None.
- Параметры
-
- tz:str, pytz.timezone, dateutil.tz.tzfile или None
-
Часовой пояс для преобразования временных меток. Передача
Noneудалит информацию о часовом поясе, сохранив локальное время. - ambiguous:‘infer’, ‘NaT’, массив bool, по умолчанию ‘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 – время без DST (обратите внимание, что этот флаг применяется только к неоднозначным моментам времени)
‘NaT’ вернёт NaT, если есть неоднозначные моменты времени
‘raise’ вызовет AmbiguousTimeError, если есть неоднозначные моменты времени.
- nonexistent:‘shift_forward’, ‘shift_backward, ‘NaT’, timedelta, по умолчанию ‘raise’
-
Несуществующее время не существует в конкретном часовом поясе, где часы были сдвинуты вперёд из-за DST.
‘shift_forward’ сдвинет несуществующее время вперёд к ближайшему существующему времени
‘shift_backward’ сдвинет несуществующее время назад к ближайшему существующему времени
‘NaT’ вернёт NaT, если есть несуществующие моменты времени
объекты timedelta сдвинут несуществующие моменты времени на указанное значение timedelta
‘raise’ вызовет NonExistentTimeError, если есть несуществующие моменты времени.
- Возвращаемое значение
-
- Тип такой же, как self
-
Массив/индекс, преобразованный в указанный часовой пояс.
- Возбуждаемые исключения
-
- TypeError
-
Если Datetime Array/Index имеет часовой пояс, а tz не равен None.
См. также
DatetimeIndex.tz_convert-
Преобразование DatetimeIndex с часовым поясом из одного часового пояса в другой.
Примеры
>>> tz_naive = pd.date_range('2018-03-01 09:00', periods=3) >>> tz_naive DatetimeIndex(['2018-03-01 09:00:00', '2018-03-02 09:00:00', '2018-03-03 09:00:00'], dtype='datetime64[ns]', freq='D')Локализация DatetimeIndex в часовом поясе US/Eastern:
>>> tz_aware = tz_naive.tz_localize(tz='US/Eastern') >>> tz_aware DatetimeIndex(['2018-03-01 09:00:00-05:00', '2018-03-02 09:00:00-05:00', '2018-03-03 09:00:00-05:00'], dtype='datetime64[ns, US/Eastern]', freq=None)С помощью
tz=None, мы можем удалить информацию о часовом поясе, сохранив локальное время (не преобразованное в UTC):>>> tz_aware.tz_localize(None) DatetimeIndex(['2018-03-01 09:00:00', '2018-03-02 09:00:00', '2018-03-03 09:00:00'], dtype='datetime64[ns]', freq=None)Будьте внимательны с изменениями DST. При последовательных данных pandas может определить время DST:
>>> s = pd.to_datetime(pd.Series(['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.dt.tz_localize('CET', ambiguous='infer') 0 2018-10-28 01:30:00+02:00 1 2018-10-28 02:00:00+02:00 2 2018-10-28 02:30:00+02:00 3 2018-10-28 02:00:00+01:00 4 2018-10-28 02:30:00+01:00 5 2018-10-28 03:00:00+01:00 6 2018-10-28 03:30:00+01:00 dtype: datetime64[ns, CET]В некоторых случаях определение DST невозможно. В таких случаях вы можете передать массив ndarray в параметр ambiguous, чтобы явно задать DST
>>> s = pd.to_datetime(pd.Series(['2018-10-28 01:20:00', ... '2018-10-28 02:36:00', ... '2018-10-28 03:46:00'])) >>> s.dt.tz_localize('CET', ambiguous=np.array([True, True, False])) 0 2018-10-28 01:20:00+02:00 1 2018-10-28 02:36:00+02:00 2 2018-10-28 03:46:00+01:00 dtype: datetime64[ns, CET]Если переход DST приводит к несуществующим моментам времени, вы можете сдвинуть эти даты вперёд или назад с помощью объекта timedelta или ‘shift_forward’ или ‘shift_backwards’.
>>> s = pd.to_datetime(pd.Series(['2015-03-29 02:30:00', ... '2015-03-29 03:30:00'])) >>> s.dt.tz_localize('Europe/Warsaw', nonexistent='shift_forward') 0 2015-03-29 03:00:00+02:00 1 2015-03-29 03:30:00+02:00 dtype: datetime64[ns, Europe/Warsaw]>>> s.dt.tz_localize('Europe/Warsaw', nonexistent='shift_backward') 0 2015-03-29 01:59:59.999999999+01:00 1 2015-03-29 03:30:00+02:00 dtype: datetime64[ns, Europe/Warsaw]>>> s.dt.tz_localize('Europe/Warsaw', nonexistent=pd.Timedelta('1H')) 0 2015-03-29 03:30:00+02:00 1 2015-03-29 03:30:00+02:00 dtype: datetime64[ns, Europe/Warsaw]
© 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/1.5.0/reference/api/pandas.DatetimeIndex.tz_localize.html