Spec-Zone.ru › pandas 0.24

pandas.Panel.tz_localize

Panel.tz_localize(tz, axis=0, level=None, copy=True, ambiguous='raise', nonexistent='raise') [source]

Локализация временной зоны для индекса Series или DataFrame, не имеющего временной зоны.

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

Параметры:
tz : string or pytz.timezone object
axis : the axis to localize
level : int, str, default None

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

copy : boolean, default True

Также создаёт копию исходных данных

ambiguous : ‘infer’, bool-ndarray, ‘NaT’, default ‘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 в обратном направлении, основываясь на порядке
  • булевый массив, где True означает время DST, а False — время non-DST (обратите внимание, что этот флаг применяется только к неоднозначным моментам)
  • ‘NaT’ — вернёт NaT, если есть неоднозначные моменты
  • ‘raise’ — вызовет AmbiguousTimeError, если есть неоднозначные моменты
nonexistent : str, default ‘raise’

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

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

Добавлена в версии 0.24.0.

Возвращает:
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

Будьте внимательны к изменениям 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_backwards’. >>> 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–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.Panel.tz_localize.html

Spec-Zone.ru

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