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
например Timedelta('0 days -00:00:00.123000')
или Timedelta('-0 days 00:00:00.123000')
xref # 15633 Здесь мы следуем (сбивающему с толку) руководству python, но я полагаю, что мы могли бы нарушить репр.
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 (вместо того, чтобы делать это специальным образом для каждого другого проекта, включая pandas), но поскольку это не так, я считаю, что это хорошая идея добавить в pandas, потому что это очень не интуитивно понятно.
Я не могу представить себе случая, когда кто-то предпочел бы это, имея дело с отрицательными timedeltas.
Самый полезный комментарий
Я бы сказал, что оно того стоит, поскольку текущее представление отрицательного числа действительно сбивает с толку.
Но что касается нарушения согласованности, я полагаю, что строковое представление для отрицательных значений времени не предназначалось для удобства использования. Я нашел следующее обсуждение (в основном все, что я смог найти об этом):
https://lists.gt.net/python/dev/1129944
Я думаю, было бы лучше изменить реализацию строки по умолчанию в python (вместо того, чтобы делать это специальным образом для каждого другого проекта, включая pandas), но поскольку это не так, я считаю, что это хорошая идея добавить в pandas, потому что это очень не интуитивно понятно.
Я не могу представить себе случая, когда кто-то предпочел бы это, имея дело с отрицательными timedeltas.