在不丢失信息的情况下将浮点数转换为字符串 - 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)
然后,你会看到在字符串转换之前,值已经是那个精度了。
我正在尝试使用 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)
然后,你会看到在字符串转换之前,值已经是那个精度了。