Выбор ответа Middle Даты и время обновлено

tz_localize против tz_convert

Вопрос

Колонка ts наивная (без пояса), а на самом деле это московское время. Что нужно, чтобы получить время в UTC?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: ts.dt.tzlocalize("Europe/Moscow").dt.tzconvert("UTC"). tzlocalize приписывает пояс наивному времени («эти часы были по Москве»), tzconvert пересчитывает в другой пояс. tzconvert на наивном времени выбросит ошибку. tzlocalize("UTC") объявит московские часы UTC-шными и сдвинет все события на 3…

Варианты ответа

  1. ts.dt.tz_convert("UTC") сразу, без других шагов
  2. ts.dt.tz_localize("UTC").dt.tz_convert("Europe/Moscow")
  3. ts.dt.tz_localize("Europe/Moscow").dt.tz_convert("UTC")правильный ответ
  4. ts - pd.Timedelta(hours=3) и больше ничего не делать

Разбор

tz_localize приписывает пояс наивному времени («эти часы были по Москве»), tz_convert пересчитывает в другой пояс. tz_convert на наивном времени выбросит ошибку. tz_localize("UTC") объявит московские часы UTC-шными и сдвинет все события на 3 часа. Ручной вычет 3 часов даст правильные числа, но колонка останется наивной, и на датах со сменой смещения такой код ломается.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме