Pandas: 負のTimedeltaのより良い表示

作成日 2017年08月11日  ·  3コメント  ·  ソース: pandas-dev/pandas

コードサンプル、可能であればコピーして貼り付けることができる例

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')は、ネガティブなTimedelta明確な表示ではありません

Timedelta('0 days -00:00:00.123000')Timedelta('-0 days 00:00:00.123000')ように負のTimedeltaを表示する方が(多くの用途で)良いかもしれません

Enhancement Output-Formatting Timedelta

最も参考になるコメント

負の数の現在の表現は本当に混乱しているので、それは本当に価値があると思います。

しかし、一貫性を破ることについては、負のタイムデルタの文字列表現は、あらゆる種類のユーザビリティを念頭に置くことを意図したものではなかったと思います。 私は次の議論を見つけました(基本的に私がそれについて見つけることができたすべて):

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

誰かがこの行動の論理的根拠を覚えていますか?

私がドキュメントに書いたものよりも良い理論的根拠を思い出しません: "文字列
timedeltaオブジェクトの表現は、それらのオブジェクトと同様に正規化されます
内部表現。」

Pythonの文字列のデフォルトの実装を変更する方が良いと思います(パンダを含むすべての異なるプロジェクトに対してアドホックな方法で行うのではなく)が、そうではないので、それはパンダに追加することをお勧めします。これは、その方法が非常に直感的ではないためです。
負のタイムデルタを処理するときに誰かがそれを好むケースは考えられません。

全てのコメント3件

xref#15633ここではPythonの(紛らわしい)リードをたどっていますが、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'

ここで矛盾する価値があるかどうかは確かではありませんが、私は推測します。

負の数の現在の表現は本当に混乱しているので、それは本当に価値があると思います。

しかし、一貫性を破ることについては、負のタイムデルタの文字列表現は、あらゆる種類のユーザビリティを念頭に置くことを意図したものではなかったと思います。 私は次の議論を見つけました(基本的に私がそれについて見つけることができたすべて):

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

誰かがこの行動の論理的根拠を覚えていますか?

私がドキュメントに書いたものよりも良い理論的根拠を思い出しません: "文字列
timedeltaオブジェクトの表現は、それらのオブジェクトと同様に正規化されます
内部表現。」

Pythonの文字列のデフォルトの実装を変更する方が良いと思います(パンダを含むすべての異なるプロジェクトに対してアドホックな方法で行うのではなく)が、そうではないので、それはパンダに追加することをお勧めします。これは、その方法が非常に直感的ではないためです。
負のタイムデルタを処理するときに誰かがそれを好むケースは考えられません。

このページは役に立ちましたか?
0 / 5 - 0 評価