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可能会更好(对于许多用途),如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 以临时方式进行),但由于情况并非如此,我相信这是一个添加到熊猫的好主意,因为它的方式非常不直观。
我想不出任何人在处理负时间增量时会更喜欢它的情况。

所有3条评论

外部参照 #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 对字符串的默认实现(而不是针对每个不同的项目,包括 Pandas 以临时方式进行),但由于情况并非如此,我相信这是一个添加到熊猫的好主意,因为它的方式非常不直观。
我想不出任何人在处理负时间增量时会更喜欢它的情况。

此页面是否有帮助?
0 / 5 - 0 等级