我在Jupyter Notebook中具有以下数据框,该数据框具有from geopy.geocoders import Nominatim
和import 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/