Метод tz_localize
Метод tz_localize применяется к Series или DataFrame
с datetime-данными через аксессор dt и позволяет назначить
часовой пояс для временных меток, которые его не имеют.
Метод принимает обязательный параметр tz с названием
часового пояса. Также можно указать параметр ambiguous
для разрешения неоднозначных моментов времени и nonexistent
для обработки несуществующих моментов при переходе на летнее время.
Синтаксис
ser.dt.tz_localize(tz, ambiguous='raise', nonexistent='raise')
Пример
Давайте назначим часовой пояс 'Europe/Moscow' для наивных временных меток:
import pandas as pd
ser = pd.Series(pd.date_range('2026-01-01', periods=3, freq='D'))
res = ser.dt.tz_localize('Europe/Moscow')
print(res)
Результат выполнения кода:
0 2026-01-01 00:00:00+03:00
1 2026-01-02 00:00:00+03:00
2 2026-01-03 00:00:00+03:00
dtype: datetime64[ns, Europe/Moscow]
Пример
Давайте назначим часовой пояс для временных меток с учетом летнего времени с использованием параметра ambiguous:
import pandas as pd
ser = pd.Series(pd.date_range('2026-10-25 01:30', periods=3, freq='H'))
res = ser.dt.tz_localize('Europe/Moscow', ambiguous='infer')
print(res)
Результат выполнения кода:
0 2026-10-25 01:30:00+03:00
1 2026-10-25 02:30:00+03:00
2 2026-10-25 03:30:00+03:00
dtype: datetime64[ns, Europe/Moscow]
Пример
Давайте обработаем несуществующий момент времени при переходе на летнее время с помощью параметра nonexistent:
import pandas as pd
ser = pd.Series(pd.date_range('2026-03-29 02:00', periods=3, freq='H'))
res = ser.dt.tz_localize('Europe/Moscow', nonexistent='shift_forward')
print(res)
Результат выполнения кода:
0 2026-03-29 03:00:00+03:00
1 2026-03-29 04:00:00+03:00
2 2026-03-29 05:00:00+03:00
dtype: datetime64[ns, Europe/Moscow]
Смотрите также
-
метод
tz_convert,
который преобразует часовой пояс временных меток -
метод
tz,
который возвращает информацию о часовом поясе -
метод
normalize,
который приводит время к полуночи -
метод
floor,
который округляет время вниз до заданной частоты