От чего зависит минимальная и максимальная временные метки панд? - PullRequest
1 голос
/ 24 марта 2019

Минимум Timestamp в Пандах:

pd.Timestamp.min
Timestamp('1677-09-21 00:12:43.145225')

и максимум:

pd.Timestamp.max
Timestamp('2262-04-11 23:47:16.854775807')

Это означает, что вы не можете преобразовать значение вне этого диапазона в дату-время Панды:

pd.Timestamp(datetime.date(2500, 1, 1))
OutOfBoundsDatetime: Out of bounds nanosecond timestamp: 2500-01-01 00:00:00

Что определяет эти пределы?

Ответы [ 2 ]

2 голосов
/ 24 марта 2019

Тип datetime хранится в наносекундах с использованием 64-разрядного целого числа со знаком. Диапазон, таким образом, составляет [2 ^ -63; 2 ^ 63 -1]. Используя 0 в качестве эпохи Unix (1970/01/01 00: 00: 00.0), вы можете увидеть, запустив этот код, что результат примерно равен 292 годам от 0 (эпоха Unix). Таким образом, максимумом является дата, представленная лидирующей 0, за которой следует 63 1

Запустите этот код, чтобы доказать это сами.

max_int=2**63-1 # maximum integer
max_int/=10**9 # from nanoseconds to seconds
max_int/=86400 # from seconds to days
max_int/=365 # from days to years (suppose no leap years)
print(1970+max_int) # print the maximum year, with an error of days

РЕДАКТИРОВАТЬ: как написано в комментарии ниже, Бен, я не сообщил источник. здесь

0 голосов
/ 24 марта 2019

Источник - это количество наносекунд, полученных из наибольшего и наименьшего количества целых чисел, хранимых в классе numpy int64, с некоторыми изменениями. Вы можете увидеть реализацию и полезный комментарий здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...