Pandas json 转换扰乱浮点精度

Pandas json conversion messing with float precision

提问人:Titouan L 提问时间:4/8/2022 更新时间:4/8/2022 访问量:1363

问:

将 DataFrame 保存为 json 字符串后,当 json 被转换回 DataFrame 时,初始 DataFrame 和生成的 DataFrame 不相等。我知道使用 时存在转换问题,但是由于目标是将 DataFrame 保存在文件中以备后用,有没有办法防止这些不准确?to_json()read_json()np.isclose()

请注意,这是一个最小的可重现示例,但实际数据包含非常精确的浮点数。

创建 DataFrame 并进行转换:

initialDF = pd.DataFrame({
    'int':[1, 2, 3, 4, 5],
    'f':[0.3, 0.05, 0.888, 152.1, 8.12]
})

jsonString = initialDF.to_json()

resultDF = pd.read_json(jsonString)

结果:

>>> print(initialDF.equals(resultDF))
False
>>> initialDF.loc[0, 'f']
0.3
>>> resultDF.loc[0, 'f']
0.30000000000000004
Python pandas 浮点 精度

评论


答:

3赞 TheTwo 4/8/2022 #1

只需添加 precise_float=True

resultDF = pd.read_json(jsonString,precise_float=True)