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
を表示する方が(多くの用途で)良いかもしれません
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の文字列のデフォルトの実装を変更する方が良いと思います(パンダを含むすべての異なるプロジェクトに対してアドホックな方法で行うのではなく)が、そうではないので、それはパンダに追加することをお勧めします。これは、その方法が非常に直感的ではないためです。
負のタイムデルタを処理するときに誰かがそれを好むケースは考えられません。
最も参考になるコメント
負の数の現在の表現は本当に混乱しているので、それは本当に価値があると思います。
しかし、一貫性を破ることについては、負のタイムデルタの文字列表現は、あらゆる種類のユーザビリティを念頭に置くことを意図したものではなかったと思います。 私は次の議論を見つけました(基本的に私がそれについて見つけることができたすべて):
https://lists.gt.net/python/dev/1129944
Pythonの文字列のデフォルトの実装を変更する方が良いと思います(パンダを含むすべての異なるプロジェクトに対してアドホックな方法で行うのではなく)が、そうではないので、それはパンダに追加することをお勧めします。これは、その方法が非常に直感的ではないためです。
負のタイムデルタを処理するときに誰かがそれを好むケースは考えられません。