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')
no es una visualización muy clara de un Timedelta
negativo
Podría ser mejor (para muchos usos) mostrar Timedelta
negativos como Timedelta('0 days -00:00:00.123000')
o Timedelta('-0 days 00:00:00.123000')
xref # 15633 Estamos siguiendo la pista (confusa) de Python aquí, pero supongo que podríamos romper en la 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'
Supongo, aunque no estoy seguro de que valga la pena la inconsistencia aquí.
Yo diría que realmente vale la pena, ya que la representación actual del número negativo es realmente confusa.
Pero sobre la ruptura de la consistencia, supongo que la representación de cadena para timedeltas negativos no estaba destinada a tener ningún tipo de usabilidad en mente. Encontré la siguiente discusión (básicamente todo lo que pude encontrar al respecto):
https://lists.gt.net/python/dev/1129944
¿Alguien recuerda la razón fundamental de este comportamiento?
No recuerdo mejor fundamento que lo que escribí en los documentos: "String
Las representaciones de objetos timedelta se normalizan de manera similar a sus
representación interna."
Supongo que sería mejor cambiar la implementación predeterminada de Python de la cadena (en lugar de hacerlo de manera ad-hoc para cada proyecto diferente, incluidos los pandas), pero como este no será el caso, creo que es un Es una buena idea agregar a los pandas, porque la forma en que es muy poco intuitiva.
No puedo pensar en un caso en el que alguien lo prefiera cuando se trata de tiempos deltas negativos.
Comentario más útil
Yo diría que realmente vale la pena, ya que la representación actual del número negativo es realmente confusa.
Pero sobre la ruptura de la consistencia, supongo que la representación de cadena para timedeltas negativos no estaba destinada a tener ningún tipo de usabilidad en mente. Encontré la siguiente discusión (básicamente todo lo que pude encontrar al respecto):
https://lists.gt.net/python/dev/1129944
Supongo que sería mejor cambiar la implementación predeterminada de Python de la cadena (en lugar de hacerlo de manera ad-hoc para cada proyecto diferente, incluidos los pandas), pero como este no será el caso, creo que es un Es una buena idea agregar a los pandas, porque la forma en que es muy poco intuitiva.
No puedo pensar en un caso en el que alguien lo prefiera cuando se trata de tiempos deltas negativos.