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

Convert float to string without losing information - Python

我正在尝试使用 geopy 根据位置坐标反向获取位置细节。现在我在 pandas 的两个不同列中有 Lat 和 Long,它们都是 float 类型。现在要使用 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))

在您的例子中,您不会通过将 float 转换为 string 而失去精度。相反,这是因为 Pandas 默认只显示浮点数的 6 个小数点。当您将其转换为字符串时,不会应用此输出默认值。

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

 pd.set_option("precision", 8)

然后,你会看到在字符串转换之前,值已经是那个精度了。