我有两个系列,它们是pd。时间戳,它们非常接近。我想得到这两个系列之间的元素差异,但是要精确到纳秒。
第一个系列:
0 2021-05-21 00:02:11.349001429
1 2021-05-21 00:02:38.195857153
2 2021-05-21 00:03:25.527530228
3 2021-05-21 00:03:26.653410069
4 2021-05-21 00:03:26.798157366
第二系列:
0 2021-05-21 00:02:11.348997322
1 2021-05-21 00:02:38.195852267
2 2021-05-21 00:03:25.527526087
3 2021-05-21 00:03:26.653406759
4 2021-05-21 00:03:26.798154350
现在,如果我简单地使用-
运算符,我将截断纳秒差。它将显示如下:
Series1 - Series2
0 00:00:00.000004
1 00:00:00.000004
2 00:00:00.000004
3 00:00:00.000003
4 00:00:00.000003
在计算时间戳之间的差异时,我不想失去纳秒精度。我想出了一个解决方案,包括对每一行执行一个for循环,并计算pd.Timedelta中的标量差异,然后从中得到微秒和纳秒。如下所示(对于第一个元素):
single_diff = Series1[0] - Series2[0]
single_diff.microseconds * 1000 + single_diff.nanoseconds
4107
有没有一种更简洁的矢量化方法来代替for循环?
2条答案
按热度按时间rdrgkggo1#
如果你使用下面的timedelta,你不会丢失精度。内部表示总是纳秒。在计算timedelta之后,你可以转换成整数来获得以纳秒为单位的差值。例如:
注意:我在这里使用numpy的int64类型,因为在某些系统上,内置的
int
将导致32位整数,即转换失败。az31mfrm2#
您也可以在没有
numpy
的情况下获得纳秒,如下所示