Pandas 减法后的日期时间结果不同
Pandas datetime results are different after substract
我有一段简单的代码:
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
,这是准确的。当您在第一行中进行减法时,会有更多的小数点,但它不会显示在输出中。因此,当您将第一个语句的结果复制并粘贴到第二个语句时,您会失去一些准确性。
结果不同,因为第一种情况的精度更高,只是没有显示出来。如果您查看 total_seconds
就可以看到这一点
pd.to_timedelta(pd.to_datetime("2020-05-03 19:12:39.406636238")
- pd.to_datetime("2020-05-03 19:12:36.508889914")).total_seconds()
#2.897746324
pd.to_timedelta("00:00:02.897746").total_seconds()
#2.897746
pandas 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
我有一段简单的代码:
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
,这是准确的。当您在第一行中进行减法时,会有更多的小数点,但它不会显示在输出中。因此,当您将第一个语句的结果复制并粘贴到第二个语句时,您会失去一些准确性。
结果不同,因为第一种情况的精度更高,只是没有显示出来。如果您查看 total_seconds
pd.to_timedelta(pd.to_datetime("2020-05-03 19:12:39.406636238")
- pd.to_datetime("2020-05-03 19:12:36.508889914")).total_seconds()
#2.897746324
pd.to_timedelta("00:00:02.897746").total_seconds()
#2.897746
pandas 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