Pandas: Mejor visualización de Timedelta negativo

Creado en 11 ago. 2017  ·  3Comentarios  ·  Fuente: pandas-dev/pandas

Ejemplo de código, si es posible, un ejemplo que se puede copiar y pegar

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

Descripción del problema

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

Enhancement Output-Formatting Timedelta

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

¿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.

Todos 3 comentarios

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.

¿Fue útil esta página
0 / 5 - 0 calificaciones