在不丢失信息的情况下将浮点数转换为字符串 - Python

问题描述

我正在尝试使用 geopy 根据位置坐标反向获取位置详细信息。现在我在 Pandas 的两个不同列中有 Lat 和 Long,并且都是浮点型。现在要使用 locator.reverse(''),输入必须是字符串。当我尝试将 float 转换为 string 时,我丢失了一些信息,例如

df.Lat[0] = 42.279971

df.Lat.astype('str')

df.Lat[0] = 42.27997063

为什么要四舍五入?我需要确切的浮点数,因为它是给我的?

感谢您的帮助!

解决方法

使用repr()在不损失精度的情况下将浮点数转换为字符串:

试试:

df.Lat = df.Lat.apply(lambda x: repr(x))

df.Lat = df.Lat.apply(repr)
,

我不确定它是否有帮助,它将数据框中的所有单元格转换为字符串

  df = df.applymap(lambda x: str(x))
,

就您的情况而言,您不会通过将浮点数转换为字符串而损失精度。相反,这是因为 Pandas 默认只显示浮点数的 6 个小数点。将其转换为字符串时,不会应用此输出默认值。

您可以通过例如测试它将默认浮点精度设置为 8:

 pd.set_option("precision",8)

然后,您将看到在字符串转换之前,值已经在该精度内。