希望这是一个非常简单的解决方案。我在SO上尝试过两个类似问题的解决方案,但这些都不适用于我
本质上,我有一个过程来评估数据帧的两列中的数字是否相等。对绝大多数人来说,这似乎是正确的。然而,在极少数情况下,看似相等的数字(小数点后6位(显示为不相等。
很明显,这取决于我的数字是如何存储的,而不是我所看到的。但奇怪的是,这些数字的数据源只将它们存储为6dp,而试图增加显示效果没有任何效果——我仍然只能看到6dp。
a=df[df['Timestamp']=='2018-03-04 22:29:57']['Limit'].copy()
b=df[df['Timestamp']=='2018-03-04 22:29:57']['Quote'].copy()
pd.options.display.precision
Out[152]: 10
a
Out[153]:
15571027 25.850000
Name: Limit, dtype: float64
b
Out[154]:
15571027 25.850000
Name: Quote, dtype: float64
a==b
Out[155]:
15571027 False
dtype: bool
a-b
Out[156]:
15571027 -0.000000
dtype: float64
b>a
Out[157]:
15571027 True
dtype: bool
我希望某种灵魂能够提出我可以在这里尝试的下一个逻辑步骤——显然b大于a,但1(我无法显示这一点,2(我最终希望创建布尔比较,我知道它将与我显示的精度相同。
非常感谢!
好的,所以我找到了问题的根源。
最初,所有这些数字在流程开始时都与浮动相同,但到最后,少数数字以某种方式被更改为浮动,尽管它们的显示方式没有改变。
罪魁祸首是通过panda中的一个大型SQLite操作将它们连接起来——有太多的数据无法合并,所以它们被导入为表,根据需要进行连接,并作为数据帧写回。即使没有数字被实际更改(即通过除法/聚合等(,也正是在这个过程中,一些浮点的存储定义被更改了。
感谢@Artyom Akselrod的教育——通过在SELECT语句中隐式舍入输出,这解决了问题。