In [2]: pd.to_timedelta(0, unit='ms') - pd.to_timedelta(123, unit='ms')
Out[2]: Timedelta('-1 days +23:59:59.877000')
Timedelta('-1 days +23:59:59.877000')
ist keine sehr klare Anzeige eines negativen Timedelta
Es könnte (für viele Anwendungen) besser sein, negative Timedelta
anzuzeigen, wie Timedelta('0 days -00:00:00.123000')
oder Timedelta('-0 days 00:00:00.123000')
xref #15633 Wir folgen hier der (verwirrenden) Führung von Python, aber ich nehme an, wir könnten bei der Repr.
In [2]: import datetime
In [3]: datetime.timedelta() - datetime.timedelta(milliseconds=123)
Out[3]: datetime.timedelta(-1, 86399, 877000)
In [4]: str(datetime.timedelta() - datetime.timedelta(milliseconds=123))
Out[4]: '-1 day, 23:59:59.877000'
Ich nehme an, obwohl ich mir nicht sicher bin, ob es die Inkonsistenz hier wert ist.
Ich würde sagen, es lohnt sich wirklich, da die aktuelle Darstellung für negative Zahl wirklich sehr verwirrend ist.
Aber was das Brechen der Konsistenz angeht, denke ich, dass die String-Darstellung für negative Zeitdeltas keine Art von Benutzerfreundlichkeit im Sinn hatte. Ich habe folgende Diskussion gefunden (im Prinzip alles, was ich dazu finden konnte):
https://lists.gt.net/python/dev/1129944
Erinnert sich jemand an die Gründe für dieses Verhalten?
Ich erinnere mich an keine bessere Begründung als das, was ich in den Dokumenten geschrieben habe: "String
Darstellungen von Zeitdelta-Objekten werden ähnlich normalisiert wie ihre
interne Vertretung."
Ich denke, es wäre besser, die Python-Standardimplementierung der Zeichenfolge zu ändern (anstatt dies für jedes Projekt, einschließlich Pandas, ad-hoc zu tun), aber da dies nicht der Fall sein wird, glaube ich, dass es ein gute Idee, Pandas hinzuzufügen, weil es so nicht intuitiv ist.
Ich kann mir keinen Fall vorstellen, in dem es jemand bevorzugen würde, wenn es um negative Zeitdeltas geht.
Hilfreichster Kommentar
Ich würde sagen, es lohnt sich wirklich, da die aktuelle Darstellung für negative Zahl wirklich sehr verwirrend ist.
Aber was das Brechen der Konsistenz angeht, denke ich, dass die String-Darstellung für negative Zeitdeltas keine Art von Benutzerfreundlichkeit im Sinn hatte. Ich habe folgende Diskussion gefunden (im Prinzip alles, was ich dazu finden konnte):
https://lists.gt.net/python/dev/1129944
Ich denke, es wäre besser, die Python-Standardimplementierung der Zeichenfolge zu ändern (anstatt dies für jedes Projekt, einschließlich Pandas, ad-hoc zu tun), aber da dies nicht der Fall sein wird, glaube ich, dass es ein gute Idee, Pandas hinzuzufügen, weil es so nicht intuitiv ist.
Ich kann mir keinen Fall vorstellen, in dem es jemand bevorzugen würde, wenn es um negative Zeitdeltas geht.