获取python数据框中列的经度和纬度

时间:2018-10-08 18:20:26

标签: python pandas gis latitude-longitude geopy

我有一列想要获取经度和纬度。 我对网络进行了研究,并讨论了有关使用geopy和Nominatim的问题。 我也尝试了这段代码:

def lat(x):
try:
    gn = geocoders.GeoNames(username='yadavk')
    lat=gn.geocode(x)[1]
    return(lat)
except TypeError:
    return(0)

latitude['lat']=latitude.place.apply(lat)

其中place是我的数据框中的列名称,由大约10万个城市,州和国家/地区组成。 这段代码可以正常工作,但是由于我要求访问许多城市,服务器超时。 任何人都可以帮助我获得所有10万个城市的经度和纬度,而无需购买订阅,并且不需要花费很长时间即可得出结果。 非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我能够自己弄清楚。我采取了两个步骤来追踪经纬度:

  1. this place下载国家,城市及其经纬度的列表。 下载后,我通过将国家和城市连接在一起来创建密钥,并在excel / merge中使用python进行了vlookup查找相关的纬度和经度。我缺少第二步的经纬度。

  2. 在geonames.org上创建一个帐户,并使用以下代码查找经度和纬度:

    def lat(x):
    try:
       gn = geocoders.GeoNames(username='demo')
       lat=gn.geocode(x)[1]
     return(lat)
    except TypeError:
     return(0)
    
    latitude['lat']=latitude.place.apply(lat)
    

    其中纬度是由城市和国家/地区名称组成的数据框。

结合这两种方法,我能够获得所有的纬度和经度。希望这会有所帮助。