将DataFrame转换为列表时,浮点精度受到影响

问题描述 投票:0回答:3

因此,我试图通过使用row.values.tolist()将浮点型DataFrame转换为列表(列表)(row是从CSV文件读取的)。它的工作还可以,尽管对于一些值来说,精度会受到影响,因此,例如,它输出的不是32.337,而是输出32.336999999999996.

由于tolist()产生列表列表,并且我需要使用列表,所以我决定切换到list(row.values.flatten()),但是它引入了几乎any值的精度问题该列表,这使情况更糟。

我在大约3年前就找到了关于此问题的discussion on Github,但是我找不到其他任何最新信息,而且我也不知道如何克服这个问题。

我尝试使用pd.set_option('display.precision',4),因为对于大多数值,我最多需要四个有效数字,但这也不起作用(假设我正确使用了它。)>

是否有任何解决方法?

因此,我试图通过使用row.values.tolist()(从CSV文件读取行)将浮点型DataFrame转换为列表(列表)。它的工作还不错,尽管对于某些值,精度是...

python csv pandas dataframe floating-point-precision
3个回答
2
投票

但是,根据基本值,您可能仍然会遇到精度问题。您仍然可以使用round指定希望的小数位数。


1
投票

您看到的“精度损失”是由于二进制浮点不能精确表示十进制分数,因此存在一些舍入误差。如果您确实希望将十进制值保持不变,那么使用实际的十进制表示形式会得到更好的结果...


0
投票

正如Padraic所暗示的,您没有使用display.precision修改正确的选项。相反,请尝试:

© www.soinside.com 2019 - 2024. All rights reserved.