python - 如何对 dtype : timedelta64[ns] in pandas/Python? 求和

标签 python pandas datetime time

我在 python 中使用 pandas 来处理时间。 我想总结几个日期之间耗时,它们是:

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 索引的前 2 个日期之间耗时,如下所示:

dt0 = df.end[0] - df.start[0]  
out: 87 days 21:07:00
dtype: timedelta64[ns]

接下来的两个日期之间也是如此:

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] 相加不起作用,为什么?

enter image description here

最佳答案

看,这就是为什么我明确希望您打印类型。 dt1dt0不是<class 'pandas._libs.tslibs.timedeltas.Timedelta'> ,他们是pandas.Series .

当您添加两个Series时它根据索引对齐。自 dt1dt2如果不共享相同的索引,它会用空值(本例中为 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]')

但实际上你应该更改你的代码,以便 dt0dt1如果您实际上不需要pd.Series,则只是这些值.

关于python - 如何对 dtype : timedelta64[ns] in pandas/Python? 求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51527011/

相关文章:

javascript - jquery datepicker 值转为 UTC 时间戳

python - 在 python 列表中计算日期的最佳/最快方法

javascript - 如何在 HTML 和 Javascript 的帮助下从浏览器使用 python (Django) 访问我的网络摄像头?

python - 根据列值将数据从一个 Pandas 数据框复制到另一个

python - 重复字典列表将单个条目复制到另一个列表

python-3.x - Flask-Pandas 创建下载文件

python - 在 python 的 c 扩展中使用 opencv 时出现问题?

python - 以其他列组的最大值为条件计算新列

python - 仅当一列满足特定条件时如何合并数据帧

php - 将纪元转换为东部时间,会慢一个小时吗?