首页 > 解决方案 > 使用 pd.Dataframe.values.tolist 时的值不精确

问题描述

将 pd.DataFrame 转换为嵌套列表时,某些值不精确。

pd.DataFrame 示例行:

1.0 -3.0 -3.0 0.01 -3.0 -1.0

此行的 pd.DataFrame.values.tolist() :

[1.0, -3.0, -3.0, 0.010000000000000009, -3.0, -1.0]

如何解释和避免这种情况?

标签: pythonpandasdataframefloating-point

解决方案


这是因为这原始值。当您显示 pd.DataFrame 时,它​​会四舍五入:

df = pd.DataFrame({'a':[1.0, -3.0, -3.0, 0.010000000000000009, -3.0, -1.0]})

    a
0   1.00
1   -3.00
2   -3.00
3   0.01
4   -3.00
5   -1.00
df.values.tolist()
# [[1.0], [-3.0], [-3.0], [0.010000000000000009], [-3.0], [-1.0]]

所以这不是 tolist() 的问题。将数字四舍五入的是 pd.DataFrame。

用于pandas.set_option("display.precision", x)设置 DataFrame 的显示精度。


推荐阅读