首页 > 解决方案 > 为什么可以添加 pd.Timedelta 和 None?

问题描述

编码

None + pd.Timedelta("1 day")

计算出一个奇怪的结果:

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

为什么会这样?

标签: pythonpandas

解决方案


如评论中所述,此行为已在更高版本的 Pandas 中修复。通过查看代码,似乎已在此提交中修复了 0.23 版。

更详细一点 - 计算 delta 的函数的代码_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

在后来的版本中,增加了第二个条件,先转换otherTimedelta对象,然后再测试条件,所以有效测试:

>>> Timedelta(None) is NaT
True

所以 nowNaT在 的情况下返回None + Timedelta


推荐阅读