1 回答

TA贡献1813条经验 获得超2个赞
瞧,这就是为什么我明确希望您打印类型。dt1而dt0不是<class 'pandas._libs.tslibs.timedeltas.Timedelta'>,他们是pandas.Series。
当您添加两个时,Series它会根据索引对齐。由于dt1和dt2不共享相同的索引,因此它将用空值填充缺失值(NaT在这种情况下),然后执行加法。默认情况下,执行加法时它不会忽略空值,因此您所看到的是x + NaT = NaT数学的工作方式。
样本数据
import pandas as pd
a = pd.Series(pd.Timedelta(1,'d'), index=[21005])
#21005 1 days
#dtype: timedelta64[ns]
b = pd.Series(pd.Timedelta(2,'d'), index=[16992])
#16992 2 days
#dtype: timedelta64[ns]
代码
加法将与索引对齐。他们没有指数,所以你得到NaT。
a+b
#16992 NaT
#21005 NaT
#dtype: timedelta64[ns]
您真正想要做的就是添加值,而不管索引如何:
a.values+b.values
#array([259200000000000], dtype='timedelta64[ns]')
不过说真的,你应该改变你的代码,以便dt0和dt1只是值,如果你真的没有必要为pd.Series。
添加回答
举报