J'ai un morceau de code simple suivant:
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
On dirait que ce résultat est un peu coupé.
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
2020-05-03 19: 12: 39.406636238! = 2020-05-03 19: 12: 39.406635914
Pourquoi les résultats sont-ils différents? Puis-je contrôler les chiffres après la virgule pour timedelta?
3 Réponses :
essayez ceci:
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)
Le résultat de la deuxième instruction est 2020-05-03 19: 12: 39.406636238
, ce qui est exact. Lorsque vous effectuez une soustraction dans la première ligne, il y a plus de points décimaux, mais cela ne s'affiche pas dans la sortie. Ainsi, lorsque vous copiez et collez le résultat de la première instruction dans la deuxième instruction, vous perdez une certaine précision.
Les résultats sont différents car dans le premier cas il y a plus de précision, ce n'est tout simplement pas affiché. Vous pouvez voir cela si vous regardez le 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
n'est précis qu'à nanosecondes
bien que ce ne soit qu'un problème de formatage d'affichage, les calculs sous-jacents ne devraient pas être différents
Voyez, le résultat par vous-même
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