首页 > 解决方案 > 将字典转换为数据框时防止数字舍入

问题描述

我编写了一个代码,首先创建一个字典,然后将其转换为数据框。字典包含纬度和经度数据。我的问题是,在转换为数据框的过程中,lon 和 lat 数据是四舍五入的。

代码如下所示:

geodata = {'01067': (13.7210676148814, 51.0600336463379, u'Dresden'),
        '01069': (13.7389066401609, 51.039558876083, u'Dresden'),
        '01097': (13.7439674110642, 51.0667452412037, u'Dresden'),
        '01099': (13.8289798683304, 51.0926193047084, u'Dresden'),
        '01109': (13.7619645364861, 51.1201009324663, u'Dresden'),
        '01127': (13.733347378178, 51.0796304130158, u'Dresden'),
        '01129': (13.7274104697459, 51.0967944759693, u'Dresden'),
        '01139': (13.6911443969423, 51.0805574259239, u'Dresden'),
        '01157': (13.6708047478723, 51.0643076931977, u'Dresden')}

postal_data1= pd.DataFrame(geodata) # at this point the numbers are rounded

postal_data1 =  postal_data1.T
postal_data1['zip'] = postal_data1.index
postal_data1.columns = ['lon', 'lat', 'city', 'zip']
postal_data1 = postal_data1.reindex(columns=['zip', 'lat', 'lon', 'city'])
postal_data1 = postal_data1.reset_index(drop=True)

最后,数据框如下所示:

postal_data1.head()
 
     zip      lat      lon     city
0  01067    51.06  13.7211  Dresden
1  01069  51.0396  13.7389  Dresden
2  01097  51.0667   13.744  Dresden
3  01099  51.0926   13.829  Dresden
4  01109  51.1201   13.762  Dresden

有谁知道如何防止纬度和经度数据的舍入?谢谢您的帮助。

标签: pythondataframedictionaryrounding

解决方案


那是不需要的。打印的 head() 只是 pandas 在打印中显示的表示。尽管默认数据精度更高,但您可以使用以下方法修改表示:

pd.set_option("display.precision", 10)

推荐阅读