如何在熊猫/ Python中对dtype:timedelta64 [ns]求和?

我正在使用python中的pand处理时间。我想总结一下两个日期之间经过的时间:


0   2012-03-06 14:22:00

0   2012-06-02 11:29:00



1   2012-04-16 20:51:00

1   2012-04-28 09:57:00

为此,我计算用0索引的前两个日期之间经过的时间,如下所示:


dt0 = df.end[0] - df.start[0]  

out: 87 days 21:07:00

dtype: timedelta64[ns]

在接下来的2个日期之间也一样:


dt1 = df.end[1] - df.start[1]  

out: 11 days 13:06:00

dtype: timedelta64[ns]

哪个工作正常,但是当我两次相加时:


dt2 = dt1 + dt0 

我得到dt2 = NaT而不是87天21:07:00 + 11天13:06:00的总和。有人可以帮忙吗?


下面是相同问题的另一个示例的屏幕截图:将a和b加起来,两个dtype:timedelta64 [ns]不起作用,为什么?

http://img2.mukewang.com/609a313400019d1001840239.jpg

catspeake
浏览 297回答 1
1回答

慕姐8265434

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

相关分类

Python