Смещение UTC неверно при использовании tz_localize и ZoneInfoPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Смещение UTC неверно при использовании tz_localize и ZoneInfo

Сообщение Anonymous »


У меня есть объект pd.DatetimeIndex по местному времени без смещений UTC. Сейчас я пытаюсь локализовать этот объект, используя tz_localize и объект ZoneInfo, чтобы он содержал информацию о смещении UTC, т.е. Turn '2023-10-29 02:00 :00' в '2023-10-29 02:00:00+02:00' для определенного часового пояса (например, «Европа/Амстердам»).

Для целей репликации приведенный ниже код создает объект, с которым я работаю.

pd_local_no_tz = pd.date_range('2023-10-29', '2023-10-30', freq='H', tz=ZoneInfo('Europe/Amsterdam')).tz_localize(None) Выход[17]: DatetimeIndex(['2023-10-29 00:00:00', '2023-10-29 01:00:00', '2023-10-29 02:00:00', '2023-10-29 02:00:00', '2023-10-29 03:00:00', '2023-10-29 04:00:00', '2023-10-29 05:00:00', '2023-10-29 06:00:00', '2023-10-29 07:00:00', '2023-10-29 08:00:00', '2023-10-29 09:00:00', '2023-10-29 10:00:00', '2023-10-29 11:00:00', '2023-10-29 12:00:00', '2023-10-29 13:00:00', '2023-10-29 14:00:00', '2023-10-29 15:00:00', '2023-10-29 16:00:00', '2023-10-29 17:00:00', '2023-10-29 18:00:00', '2023-10-29 19:00:00', '2023-10-29 20:00:00', '2023-10-29 21:00:00', '2023-10-29 22:00:00', '2023-10-29 23:00:00', '2023-10-30 00:00:00'], dtype='datetime64[ns]', freq=None) Исходный объект pd.DatetimeIndex уже содержит правильные изменения часов, причем дважды появляется «2023-10-29 02:00:00» (без смещения UTC).

Сейчас я пытаюсь локализовать DatetimeIndex следующим образом, используя ZoneInfo:

pd_local = pd_local_no_tz.tz_localize(ZoneInfo('Европа/Амстердам'), ambiguous='infer') Однако результирующий pd.DatetimeIndex теперь содержит дважды запись '2023-10-29 02:00:00+02:00', хотя вторая должна иметь другое смещение UTC, а именно '2023-10-29 02:00:00+01:00':

Выход[21]: DatetimeIndex(['2023-10-29 00:00:00+02:00', '2023-10-29 01:00:00+02:00', '2023-10-29 02:00:00+02:00', '2023-10-29 02:00:00+02:00', '2023-10-29 03:00:00+01:00', '2023-10-29 04:00:00+01:00', '2023-10-29 05:00:00+01:00', '2023-10-29 06:00:00+01:00', '2023-10-29 07:00:00+01:00', '2023-10-29 08:00:00+01:00', '2023-10-29 09:00:00+01:00', '2023-10-29 10:00:00+01:00', '2023-10-29 11:00:00+01:00', '2023-10-29 12:00:00+01:00', '2023-10-29 13:00:00+01:00', '2023-10-29 14:00:00+01:00', '2023-10-29 15:00:00+01:00', '2023-10-29 16:00:00+01:00', '2023-10-29 17:00:00+01:00', '2023-10-29 18:00:00+01:00', '2023-10-29 19:00:00+01:00', '2023-10-29 20:00:00+01:00', '2023-10-29 21:00:00+01:00', '2023-10-29 22:00:00+01:00', '2023-10-29 23:00:00+01:00', '2023-10-30 00:00:00+01:00'], dtype='datetime64[ns, Europe/Amsterdam]', freq=None) Если сделать то же самое без использования ZoneInfo, смещение UTC будет правильным:

pd_local = pd_local_no_tz.tz_localize('Европа/Амстердам', ambiguous='infer') Выход[23]: DatetimeIndex(['2023-10-29 00:00:00+02:00', '2023-10-29 01:00:00+02:00', '2023-10-29 02:00:00+02:00', '2023-10-29 02:00:00+01:00', '2023-10-29 03:00:00+01:00', '2023-10-29 04:00:00+01:00', '2023-10-29 05:00:00+01:00', '2023-10-29 06:00:00+01:00', '2023-10-29 07:00:00+01:00', '2023-10-29 08:00:00+01:00', '2023-10-29 09:00:00+01:00', '2023-10-29 10:00:00+01:00', '2023-10-29 11:00:00+01:00', '2023-10-29 12:00:00+01:00', '2023-10-29 13:00:00+01:00', '2023-10-29 14:00:00+01:00', '2023-10-29 15:00:00+01:00', '2023-10-29 16:00:00+01:00', '2023-10-29 17:00:00+01:00', '2023-10-29 18:00:00+01:00', '2023-10-29 19:00:00+01:00', '2023-10-29 20:00:00+01:00', '2023-10-29 21:00:00+01:00', '2023-10-29 22:00:00+01:00', '2023-10-29 23:00:00+01:00', '2023-10-30 00:00:00+01:00'], dtype='datetime64[ns, Europe/Amsterdam]', freq=None) Как получить правильное смещение UTC при преобразовании объекта DatetimeIndex с помощью объекта ZoneInfo?

Я использую pandas 3.9, и для меня важно использовать ZoneInfo, потому что pytz не обрабатывает изменения часов после 2037 года. Поэтому цель состоит в том, чтобы правильно добавить информацию о смещении UTC в временные метки после 2037 года.
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»