Spec-Zone.ru › pandas 0.24

pandas.Series.dt.tz_localize

Series.dt.tz_localize(*args, **kwargs) [source]

Локализация часового пояса для неявных по времени объектов DateTime Array/Index.

Этот метод принимает объект DateTime Array/Index без часового пояса и делает его осознающим часовой пояс. Он не перемещает время в другой часовой пояс. Локализация часового пояса помогает переключаться между объектами, осознающими и не осознающими часовой пояс.

Параметры:
tz : string, pytz.timezone, dateutil.tz.tzfile or None

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

ambiguous : ‘infer’, ‘NaT’, bool array, default ‘raise’

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

  • ‘infer’ попытается определить часы перехода на летнее время по заказу
  • булев массив, где True означает время летнего времени, а False — время обычного времени (обратите внимание, что этот флаг применяется только к неоднозначным моментам времени)
  • ‘NaT’ вернет NaT, если есть неоднозначные моменты времени
  • ‘raise’ вызовет AmbiguousTimeError, если есть неоднозначные моменты времени
nonexistent : ‘shift_forward’, ‘shift_backward, ‘NaT’, timedelta,

по умолчанию ‘raise’

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

  • ‘shift_forward’ переместит несуществующее время вперёд к ближайшему существующему времени
  • ‘shift_backward’ переместит несуществующее время назад к ближайшему существующему времени
  • ‘NaT’ вернет NaT, если есть несуществующие моменты времени
  • объекты timedelta сместят несуществующие моменты времени на заданный интервал
  • ‘raise’ вызовет NonExistentTimeError, если есть несуществующие моменты времени

Новое в версии 0.24.0.

errors : {‘raise’, ‘coerce’}, default None
  • ‘raise’ вызовет NonExistentTimeError, если отметка времени недействительна в указанном часовом поясе (например, из-за перехода на летнее или зимнее время). Используйте nonexistent='raise' вместо этого.
  • ‘coerce’ вернет NaT, если отметку времени нельзя преобразовать в указанный часовой пояс. Используйте nonexistent='NaT' вместо этого.

Устарело начиная с версии 0.24.0.

Возвращает:
result : same type as self

Массив/индекс, преобразованный в указанный часовой пояс.

Возбуждает:
TypeError

Если массив/индекс Datetime осознаёт часовой пояс, а 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='D')

С помощью 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='D')

Будьте внимательны к изменениям летнего времени. При наличии последовательных данных pandas может определить время летнего времени: >>> 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’) 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.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]

Если переход на летнее время вызывает несуществующее время, вы можете сдвинуть эти даты вперёд или назад с помощью объекта 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–2012, 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/0.24.2/reference/api/pandas.Series.dt.tz_localize.html

Spec-Zone.ru

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