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