减去后的熊猫日期时间结果不同

时间:2020-05-11 14:30:24

标签: 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: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数字吗?

3 个答案:

答案 0 :(得分:2)

熊猫datetime仅适用于nanoseconds

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

请参阅,为您自己的结果

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 

答案 1 :(得分:1)

尝试一下:

AUTOSSH_POLL=10 autossh -C -f -M 9910 -N -L 6969:127.0.0.1:12345 remoteuser@example.com

第二条语句的结果为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) ,这是准确的。当您在第一行中进行减法时,会有更多的小数点,但未在输出中显示。因此,当您将第一条语句的结果复制并粘贴到第二条语句时,就会失去一些准确性。

答案 2 :(得分:1)

结果有所不同,因为在第一种情况下,精度更高,只是未显示。如果您查看server { listen 80 default_server; server_name _; location / { proxy_set_header Host $host; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header X-Real-IP $remote_addr; proxy_pass http://$host:4001; } }

,可以看到此信息
total_seconds