reverse geopy geocoding pandas
我在Jupyter笔记本中有以下数据框,其中有一个与
1 2 3 4 5 6 7 | stop_id Lat Long 0 2 53.352280 -6.263668 1 3 53.352345 -6.263758 2 4 53.352604 -6.264143 3 6 53.352783 -6.264417 4 7 53.352867 -6.264543 5 8 53.353287 -6.265152 |
我一直在尝试在GPS坐标中添加一个新的列,其中填充了相应的地址。
为了做到这一点,我试过
1 | df['address'] = geolocator.reverse((df['Lat'], df['Long'])) |
号
但收到以下错误消息:
ValueError: Must be a coordinate pair or Point.
号
然后我又创建了一个专栏[拉特隆]
1 2 3 4 5 6 7 8 9 10 | df['LatLong'] = df[df.columns[1:]].apply( lambda x: ', '.join(x.dropna().astype(float).astype(str)),axis=1) stop_id Lat Long LatLong 0 2 53.352280 -6.263668 53.35228, -6.263668 1 3 53.352345 -6.263758 53.352345, -6.263758 2 4 53.352604 -6.264143 53.352604, -6.264143 3 6 53.352783 -6.264417 53.352783, -6.264417 4 7 53.352867 -6.264543 53.352867, -6.264543 5 8 53.353287 -6.265152 53.353287, -6.265152 |
然后我运行以下代码:
1 | df['address'] = geolocator.reverse(df['LatLong']) |
。
但是,我只收到完全相同的错误消息。
我上面使用的代码是从本网站的其他答案改编而来的,适用于类似的问题和地质调查的文档,因此我假设我的代码不够精确,无法以正确的方式提取地质调查的GPS坐标。
有人能向我指出我的错误吗?
问题
您的错误消息显示:
ValueError: Must be a coordinate pair or Point
两者都有:
1 | df['address'] = geolocator.reverse((df['Lat'], df['Long'])) |
和
1 | df['address'] = geolocator.reverse(df['LatLong']) |
您正在将熊猫结构发送到一个不理解它们的方法中。
解决方案我无法对此进行测试,但解决方案可能看起来像:
1 2 | df['address'] = df.apply( lambda row: geolocator.reverse((row['Lat'], row['Long'])), axis=1) |
"大量数据帧行可能会产生大量对地理编码服务的地理编码请求,这些请求可能会受到服务的限制(例如,返回过多的请求429 HTTP错误或超时)。
geopy.extra.rate_limiter.ratelimiter类提供了一个方便的包装器,可用于在geocoding调用之间自动添加延迟,以减少geocoding服务的负载。此外,它还可以重试失败的请求,并接收个别行的错误。"
我在地质文献上找到了这个。也许你应该换一下Tre Ratelimiter看看有没有帮助