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')
is not a very clear display of a negative Timedelta
It could be better (for many usages) to display negative Timedelta
like Timedelta('0 days -00:00:00.123000')
or Timedelta('-0 days 00:00:00.123000')
xref #15633 We're following python's (confusing) lead here, but I suppose we could break on the 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'
I suppose, though not really sure its worth the inconsistency here.
I would say it is really worth it, as the current representation for negative number is really really confusing.
But about breaking consistency, I guess the string representation for negative timedeltas was not meant to have any kind of usability in mind. I found the following discussion (basically all I could found about it):
https://lists.gt.net/python/dev/1129944
Does anyone remember the rationale for this behaviour?
I don't recall any better rationale than what I wrote in the docs: "String
representations of timedelta objects are normalized similarly to their
internal representation."
I guess it would be better to have python's default implementation of the string changed (instead of doing it in an ad-hoc fashion for every different project, including pandas), but as this won't be the case, I believe it is a good idea to add to pandas, because the way it is is very non intuitive.
I can't think of a case where anyone would prefer it when dealing with negative timedeltas.
Most helpful comment
I would say it is really worth it, as the current representation for negative number is really really confusing.
But about breaking consistency, I guess the string representation for negative timedeltas was not meant to have any kind of usability in mind. I found the following discussion (basically all I could found about it):
https://lists.gt.net/python/dev/1129944
I guess it would be better to have python's default implementation of the string changed (instead of doing it in an ad-hoc fashion for every different project, including pandas), but as this won't be the case, I believe it is a good idea to add to pandas, because the way it is is very non intuitive.
I can't think of a case where anyone would prefer it when dealing with negative timedeltas.