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。
添加回答
舉報