Почему tz-naive Timestamp преобразуется в целое число, а tz-aware сохраняется как Timestamp?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Почему tz-naive Timestamp преобразуется в целое число, а tz-aware сохраняется как Timestamp?

Сообщение Anonymous »

Понятно и ожидаемо (с учетом tz):
import datetime
import numpy as np
import pandas as pd

aware = pd.DatetimeIndex(["2024-11-21", "2024-11-21 12:00"], tz="UTC")
eod = datetime.datetime.combine(aware[-1].date(), datetime.time.max, aware.tz)
aware, eod, np.concat([aware, [eod]])

возвращает
(DatetimeIndex(['2024-11-21 00:00:00+00:00', '2024-11-21 12:00:00+00:00'],
dtype='datetime64[ns, UTC]', freq=None),
datetime.datetime(2024, 11, 21, 23, 59, 59, 999999,
tzinfo=datetime.timezone.utc),
array([Timestamp('2024-11-21 00:00:00+0000', tz='UTC'),
Timestamp('2024-11-21 12:00:00+0000', tz='UTC'),
datetime.datetime(2024, 11, 21, 23, 59, 59, 999999,
tzinfo=datetime.timezone.utc)],
dtype=object))

обратите внимание на метки времени (и дату и время) в возвращаемом значении np.concat.
Неожиданно (tz-наивно):
naive = pd.DatetimeIndex(["2024-11-21", "2024-11-21 12:00"])
eod = datetime.datetime.combine(naive[-1].date(), datetime.time.max, aware.tz)
naive, eod, np.concat([naive, [eod]])

возвращает
(DatetimeIndex(['2024-11-21 00:00:00', '2024-11-21 12:00:00'],
dtype='datetime64[ns]', freq=None),
datetime.datetime(2024, 11, 21, 23, 59, 59, 999999),
array([1732147200000000000, 1732190400000000000,
datetime.datetime(2024, 11, 21, 23, 59, 59, 999999)], dtype=object))

обратите внимание на интерджеры (и дату и время) в возвращаемом значении np.concat.
  • почему я получаю целые числа в объединенном массиве для tz-наивного индекса?
  • как этого избежать? То есть, как добавить EOD к tz-наивному DatetimeIndex?
PS. Интересно, что на уровне numpy индексы идентичны:
np.testing.assert_array_equal(aware.values, naive.values)


Подробнее здесь: https://stackoverflow.com/questions/792 ... as-timesta
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

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

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