Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 对CSV文件中的地址列表进行地理编码_Python_Csv_Geocoding - Fatal编程技术网

Python 对CSV文件中的地址列表进行地理编码

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

我正在尝试对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\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