我在Jupyter Notebook中具有以下数据框,该数据框具有from geopy.geocoders import Nominatimimport pandas as pd的GPS坐标列表。

    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坐标添加一个新列,其中填充了相应的地址。

为此,我尝试了

df['address'] = geolocator.reverse((df['Lat'], df['Long']))


但收到以下错误消息:


  ValueError:必须是坐标对或Point。


然后,我创建了另一列[LatLong]

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


然后,我运行以下代码:

df['address'] = geolocator.reverse(df['LatLong'])


但是,我只是得到完全相同的错误消息。

我上面使用的代码已从该站点上的其他答案改编为类似的问题和GeoPy的文档,因此我假设我的代码不够精确,无法以正确的方式提取GPS坐标以进行geopy。

谁能向我指出我的错误?

最佳答案

问题

您的错误消息说:


  ValueError:必须是坐标对或Point


同时:

df['address'] = geolocator.reverse((df['Lat'], df['Long']))




df['address'] = geolocator.reverse(df['LatLong'])


您正在将熊猫结构发送到不了解它们的方法中。



我没有办法对此进行测试,但是解决方案可以如下所示:

df['address'] = df.apply(
    lambda row: geolocator.reverse((row['Lat'], row['Long'])), axis=1)

关于python - 反向地理地理编码 Pandas ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45400288/

10-12 21:19