Python 对CSV文件中的地址列表进行地理编码
我正在尝试对CSV文件中的地址列表进行地理编码。包含该信息的列名为“full”,如下所示:Python 对CSV文件中的地址列表进行地理编码,python,csv,geocoding,Python,Csv,Geocoding,我正在尝试对CSV文件中的地址列表进行地理编码。包含该信息的列名为“full”,如下所示: full 100 Ross St,15219 1014 Blackadore Ave.,15208 1026 Winterton St.,15206 ... 这是我正在使用的代码: import csv import pygeocoder import pandas as pd from pygeocoder import Geocoder df = pd.read_csv('C:\Users\Je
full
100 Ross St,15219
1014 Blackadore Ave.,15208
1026 Winterton St.,15206
...
这是我正在使用的代码:
import csv
import pygeocoder
import pandas as pd
from pygeocoder import Geocoder
df = pd.read_csv('C:\Users\Jesus\Desktop\Events.csv')
address = df.full
result = Geocoder.geocode(address)
print(result[0].coordinates)
这是输出:
Traceback (most recent call last):
File "C:\Users\Jesus\Desktop\python\geocode.py", line 10, in <module>
result = Geocoder.geocode(address)
File "C:\Python27\lib\site-packages\pygeocoder.py", line 160, in geocode
return GeocoderResult(Geocoder.get_data(params=params))
File "C:\Python27\lib\site-packages\pygeocoder.py", line 107, in get_data
response_json = response.json()
File "C:\Python27\lib\site-packages\requests\models.py", line 693, in json
return json.loads(self.text, **kwargs)
File "C:\Python27\lib\site-packages\simplejson\__init__.py", line 488, in loads
return _default_decoder.decode(s)
File "C:\Python27\lib\site-packages\simplejson\decoder.py", line 370, in decode
obj, end = self.raw_decode(s)
File "C:\Python27\lib\site-packages\simplejson\decoder.py", line 389, in raw_decode
return self.scan_once(s, idx=_w(s, idx).end())
File "C:\Python27\lib\site-packages\simplejson\scanner.py", line 122, in scan_once
return _scan_once(string, idx)
File "C:\Python27\lib\site-packages\simplejson\scanner.py", line 118, in _scan_once
raise JSONDecodeError(errmsg, string, idx)
JSONDecodeError: Expecting value: line 1 column 1 (char 0
回溯(最近一次呼叫最后一次):
文件“C:\Users\Jesus\Desktop\python\geocode.py”,第10行,在
结果=地理编码器。地理编码(地址)
地理代码中的文件“C:\Python27\lib\site packages\pygeocoder.py”,第160行
返回GeocoderResult(Geocoder.get_数据(params=params))
get\U数据中的第107行文件“C:\Python27\lib\site packages\pygeocoder.py”
response_json=response.json()
json格式的文件“C:\Python27\lib\site packages\requests\models.py”,第693行
返回json.load(self.text,**kwargs)
文件“C:\Python27\lib\site packages\simplejson\\uuuuu init\uuuuuu.py”,第488行,装入
返回\u默认\u解码器。解码
文件“C:\Python27\lib\site packages\simplejson\decoder.py”,第370行,在decode中
obj,end=self.raw_解码
原始解码中的文件“C:\Python27\lib\site packages\simplejson\decoder.py”,第389行
返回self.scan_一次(s,idx=_w(s,idx.end())
文件“C:\Python27\lib\site packages\simplejson\scanner.py”,第122行,扫描一次
返回扫描一次(字符串,idx)
文件“C:\Python27\lib\site packages\simplejson\scanner.py”,第118行,扫描一次
raise JSONDecodeError(errmsg,string,idx)
JSONDecodeError:应为值:第1行第1列(字符0
您的地址
变量是pandas中的一个系列对象,这可能会导致此问题。要对CSV中的所有地址进行地理编码,请按如下方式对其进行迭代:
for a in address:
result = Geocoder.geocode(a)
print(result[0].coordinates)
要将结果存储在文件中(假定为Python 2.x),请执行以下操作:
如果需要,您可以执行
outfile.write(str(结果[0].坐标))
而不是打印。唯一的区别是print
自动添加换行符。要添加到列表,只需在for
语句(例如坐标\u列表=[]
之外声明列表)并将打印
替换为坐标列表。追加(结果[0]。坐标)
。在Python3.x中,这两种方法都可以使用,但是,print>>outfile
语句不能使用。难道你不能将列表上传到地理编码服务,然后返回结果吗?我可以,但我会学到一些新的东西吗?如果我想将打印结果保存到文件或列表中呢?请按照说明编辑答案。
with open('filename', 'w') as outfile:
for a in address:
result = Geocoder.geocode(a)
print >>outfile, str(result[0].coordinates) # Prints to file