【问题标题】:Add geo-location data to Pandas data frame将地理位置数据添加到 Pandas 数据框
【发布时间】:2014-12-11 18:45:45
【问题描述】:

我正在将 CSV 导入 pandas 数据框,然后尝试根据从 geopy.geocoders.GoogleV3() 检索到的数据在该数据框中创建三个新列:

import pandas from geopy.geocoders import GoogleV3

DATA = pandas.read_csv("file/to/csv") 
geolocator = GoogleV3()

DATA.googleaddress, (DATA.latitude, DATA.longitude) = geolocator.geocode(DATA.address)

问题是我不断收到此错误:

Traceback (most recent call last):
  File "C:/Path/To/GeoCoder.py", line 9, in <module>
    DATA.googleaddress, (DATA.latitude, DATA.longitude) = geolocator.geocode(DATA.address)
TypeError: 'NoneType' object is not iterable

这个错误是什么意思,我该如何解决?

【问题讨论】:

  • 你验证过DATA数据框有数据吗?
  • 是的,确实好几次 :)

标签: python pandas geolocation geopy


【解决方案1】:

因为geolocator.geocode 每次需要一个参数,而不是列表(或数组)。

你可以试试:

locs = [ geolocator.geocode(addr) for addr in DATA.address ]
geo_info = pandas.DataFrame(
    [ (addr.address, addr.latitude, addr.longitude) for addr in locs ],
    columns=['googleaddress', 'latitude', 'longitude'])

您所要做的就是合并这些 DataFrame:

DATA.combine_first(geo_info)

请注意,bad form 在 python 中具有全大写变量。

【讨论】:

  • 好吧,那做了点什么!谢谢,但现在我收到一个错误:“解包的变量太多”......猜测是因为我传递了太多地址?但现在只有 27 岁...
  • 不,这是因为您有一个包含 27 个 Location 实例的列表,您正在尝试将 unpack 分配给 2 个元素(其中一个是一个元组)。我会更新答案。
  • 做到了!非常感谢。
猜你喜欢
  • 2019-11-07
  • 1970-01-01
  • 1970-01-01
  • 2018-09-05
  • 2015-08-28
  • 2019-08-05
  • 2021-10-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多