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')
外部参照 #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 以临时方式进行),但由于情况并非如此,我相信这是一个添加到熊猫的好主意,因为它的方式非常不直观。
我想不出任何人在处理负时间增量时会更喜欢它的情况。
最有用的评论
我会说这真的很值得,因为当前的负数表示真的很令人困惑。
但是关于打破一致性,我想负时间增量的字符串表示并不意味着考虑任何类型的可用性。 我发现了以下讨论(基本上我能找到的所有相关内容):
https://lists.gt.net/python/dev/1129944
我想最好改变 python 对字符串的默认实现(而不是针对每个不同的项目,包括 Pandas 以临时方式进行),但由于情况并非如此,我相信这是一个添加到熊猫的好主意,因为它的方式非常不直观。
我想不出任何人在处理负时间增量时会更喜欢它的情况。