将地理位置数据添加到 Pandas 数据框
Posted
技术标签:
【中文标题】将地理位置数据添加到 Pandas 数据框【英文标题】:Add geo-location data to Pandas data frame 【发布时间】: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数据框有数据吗? 是的,确实好几次 :) 【参考方案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 个元素(其中一个是一个元组)。我会更新答案。
做到了!非常感谢。以上是关于将地理位置数据添加到 Pandas 数据框的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Pandas 数据框中的特定位置插入一列? (更改熊猫数据框中的列顺序)