Почему можно добавить pd.Timedelta и None? - PullRequest
0 голосов
/ 12 сентября 2018

Код

None + pd.Timedelta("1 day")

приводит к странному результату:

Timedelta('-106751 days +00:12:43:145224')

Почему это происходит?

1 Ответ

0 голосов
/ 13 сентября 2018

Как уже упоминалось в комментариях, это поведение было исправлено в более поздних версиях Pandas.Из-за того, что мы перебираем код, кажется, что он был исправлен для версии 0.23 в этом коммите .

Более подробно - код функции, вычисляющей дельту, _binary_op_method_timedeltalike, содержит условие:

elif other is NaT:  # (N)ot-(A)-(T)ime, the time equivalent of NaN
    return NaT

Но None не NaT, и это является причиной ошибки:

>>> None is NaT
False

В более поздней версии второе условие имеетбыло добавлено, сначала преобразовав other в Timedelta объект, а затем снова протестировав условие, чтобы эффективно протестировать:

>>> Timedelta(None) is NaT
True

Так что теперь NaT возвращается в случае None + Timedelta.

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