Pandas: Лучшее отображение отрицательного Timedelta

Созданный на 11 авг. 2017  ·  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 например Timedelta('0 days -00:00:00.123000') или Timedelta('-0 days 00:00:00.123000')

Enhancement Output-Formatting Timedelta

Самый полезный комментарий

Я бы сказал, что оно того стоит, поскольку текущее представление отрицательного числа действительно сбивает с толку.

Но что касается нарушения согласованности, я полагаю, что строковое представление для отрицательных значений времени не предназначалось для удобства использования. Я нашел следующее обсуждение (в основном все, что я смог найти об этом):

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

Кто-нибудь помнит причину такого поведения?

Я не припоминаю лучшего обоснования, чем то, что я написал в документации: «Строка
представления объектов timedelta нормализуются аналогично их
внутреннее представительство ".

Я думаю, было бы лучше изменить реализацию строки по умолчанию в python (вместо того, чтобы делать это специальным образом для каждого другого проекта, включая pandas), но поскольку это не так, я считаю, что это хорошая идея добавить в pandas, потому что это очень не интуитивно понятно.
Я не могу представить себе случая, когда кто-то предпочел бы это, имея дело с отрицательными timedeltas.

Все 3 Комментарий

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.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги