问题描述
我正在尝试使用 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)
然后,您将看到在字符串转换之前,值已经在该精度内。