Code Sample, a copy-pastable example if possible

In [2]: pd.to_timedelta(0, unit='ms') - pd.to_timedelta(123, unit='ms')
Out[2]: Timedelta('-1 days +23:59:59.877000')

Problem description

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')

Comment From: chris-b1

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'

Comment From: jreback

I suppose, though not really sure its worth the inconsistency here.

Comment From: Sup3rGeo

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.

Comment From: veenstrajelmer

I realize this is an old issue, but this would be amazing. I ran into this issue when plotting timedelta's where I found the negative values to be displayed in a non intuitive form. I also encounter this in TimedeltaIndex and plain pd.Timedelta.

For the axis labels, I have slighly adjusted TimeSeries_TimedeltaFormatter to display timedelta axis labels in a more intuitive format: https://github.com/Deltares-research/kenmerkendewaarden/blob/ff47a2c3f2e575726cb5ef696c6ef266de1ed776/kenmerkendewaarden/utils.py#L15-L48. I am posting this here just to say that this function might also require an update.

@mroeschke @jbrockmendel if a PR would be contributed, would it still be considered to be added? I now have a workaround in my own code that I would like to discontinue. The workaround only works for plotting, but I guess it also should work for prints of dataframes/series, not sure how yet. Some hint would be helpful here.

Comment From: jbrockmendel

I'd be open to something more readable, but won't lose sleep over it.