为什么可以添加pd.Timedelta和None?

时间:2018-09-12 17:47:48

标签: python pandas

代码

None + pd.Timedelta("1 day")

得出一个奇怪的结果:

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

为什么会这样?

1 个答案:

答案 0 :(得分:2)

如评论中所述,此行为已在更高版本的Pandas中修复。通过遍历代码,似乎this commit中的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