Python 3.x 减法后的时间结果不同

Python 3.x 减法后的时间结果不同,python-3.x,pandas,datetime,timedelta,Python 3.x,Pandas,Datetime,Timedelta,我有一段简单的代码: pd.to_timedelta( pd.to_datetime("2020-05-03 19:12:39.406636238") - pd.to_datetime("2020-05-03 19:12:36.508889914") ) ) # Result = 00:00:02.897746 看起来,这个结果被修剪了一点 pd.to_datetime("2020-05-03 19:12:36.508889914") + pd.to_timedelta("00:00

我有一段简单的代码:

pd.to_timedelta(
  pd.to_datetime("2020-05-03 19:12:39.406636238") - pd.to_datetime("2020-05-03 19:12:36.508889914")
  )
)
# Result = 00:00:02.897746 
看起来,这个结果被修剪了一点

pd.to_datetime("2020-05-03 19:12:36.508889914") + pd.to_timedelta("00:00:02.897746"))
# Result = 2020-05-03 19:12:39.406635914
2020-05-03 19:12:39.406636238!=2020-05-03 19:12:39.406635914

为什么结果不同?我可以控制timedelta逗号后的数字吗

试试这个:

td = pd.to_timedelta(pd.to_datetime("2020-05-03 19:12:39.406636238") - pd.to_datetime("2020-05-03 19:12:36.508889914"))

print(pd.to_datetime("2020-05-03 19:12:36.508889914") + td)
第二个语句的结果是2020-05-03 19:12:39.406636238,这是准确的。当您在第一行进行减法运算时,小数点会更多,但不会显示在输出中。因此,当您将第一条语句的结果复制并粘贴到第二条语句时,您将失去一些准确性。

尝试以下方法:

td = pd.to_timedelta(pd.to_datetime("2020-05-03 19:12:39.406636238") - pd.to_datetime("2020-05-03 19:12:36.508889914"))

print(pd.to_datetime("2020-05-03 19:12:36.508889914") + td)

第二个语句的结果是2020-05-03 19:12:39.406636238,这是准确的。当您在第一行进行减法运算时,小数点会更多,但不会显示在输出中。因此,当您将第一条语句的结果复制并粘贴到第二条语句时,您正在失去一些准确性。

结果不同,因为在第一种情况下,精度更高,只是没有显示出来。如果你看一下总的秒数,就可以看到这一点


结果是不同的,因为在第一种情况下,精度更高,只是没有显示出来。如果你看一下总的秒数,就可以看到这一点

时间精确到纳秒

尽管这只是一个显示格式问题,但基础计算不应有所不同

看,结果是你自己的

x = pd.to_timedelta(
  pd.to_datetime("2020-05-03 19:12:39.406636238") - pd.to_datetime("2020-05-03 19:12:36.508889914") , unit='N'
  )
pd.to_datetime("2020-05-03 19:12:36.508889914") + x
# Result =Timestamp('2020-05-03 19:12:39.406636238') which matches with inital datetime 
时间精确到纳秒

尽管这只是一个显示格式问题,但基础计算不应有所不同

看,结果是你自己的

x = pd.to_timedelta(
  pd.to_datetime("2020-05-03 19:12:39.406636238") - pd.to_datetime("2020-05-03 19:12:36.508889914") , unit='N'
  )
pd.to_datetime("2020-05-03 19:12:36.508889914") + x
# Result =Timestamp('2020-05-03 19:12:39.406636238') which matches with inital datetime