Pandas: Meilleur affichage du Timedelta négatif

Créé le 11 août 2017  ·  3Commentaires  ·  Source: pandas-dev/pandas

Exemple de code, un exemple à copier-coller si possible

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

Description du problème

Timedelta('-1 days +23:59:59.877000') n'est pas un affichage très clair d'un Timedelta négatif

Il pourrait être préférable (pour de nombreux usages) d'afficher des Timedelta négatifs comme Timedelta('0 days -00:00:00.123000') ou Timedelta('-0 days 00:00:00.123000')

Enhancement Output-Formatting Timedelta

Commentaire le plus utile

Je dirais que cela en vaut vraiment la peine, car la représentation actuelle des nombres négatifs est vraiment très déroutante.

Mais à propos de la rupture de cohérence, je suppose que la représentation sous forme de chaîne pour les deltas de temps négatifs n'était pas censée avoir une quelconque convivialité à l'esprit. J'ai trouvé la discussion suivante (en gros tout ce que j'ai pu trouver à ce sujet):

https://lists.gt.net/python/dev/1129944

Est-ce que quelqu'un se souvient de la raison de ce comportement?

Je ne me souviens pas d'une meilleure justification que ce que j'ai écrit dans les docs : "String
les représentations des objets timedelta sont normalisées de la même manière que leur
représentation interne."

Je suppose qu'il serait préférable de modifier l'implémentation par défaut de python de la chaîne (au lieu de le faire de manière ad hoc pour chaque projet différent, y compris les pandas), mais comme ce ne sera pas le cas, je pense que c'est un bonne idée d'ajouter aux pandas, car la façon dont c'est très peu intuitif.
Je ne peux pas penser à un cas où quelqu'un le préférerait lorsqu'il s'agit de deltas de temps négatifs.

Tous les 3 commentaires

xref #15633 Nous suivons l'exemple (déroutant) de python ici, mais je suppose que nous pourrions nous arrêter sur le 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'

Je suppose, mais pas vraiment sûr que cela vaille l'incohérence ici.

Je dirais que cela en vaut vraiment la peine, car la représentation actuelle des nombres négatifs est vraiment très déroutante.

Mais à propos de la rupture de cohérence, je suppose que la représentation sous forme de chaîne pour les deltas de temps négatifs n'était pas censée avoir une quelconque convivialité à l'esprit. J'ai trouvé la discussion suivante (en gros tout ce que j'ai pu trouver à ce sujet):

https://lists.gt.net/python/dev/1129944

Est-ce que quelqu'un se souvient de la raison de ce comportement?

Je ne me souviens pas d'une meilleure justification que ce que j'ai écrit dans les docs : "String
les représentations des objets timedelta sont normalisées de la même manière que leur
représentation interne."

Je suppose qu'il serait préférable de modifier l'implémentation par défaut de python de la chaîne (au lieu de le faire de manière ad hoc pour chaque projet différent, y compris les pandas), mais comme ce ne sera pas le cas, je pense que c'est un bonne idée d'ajouter aux pandas, car la façon dont c'est très peu intuitif.
Je ne peux pas penser à un cas où quelqu'un le préférerait lorsqu'il s'agit de deltas de temps négatifs.

Cette page vous a été utile?
0 / 5 - 0 notes