2017-11-14 3 views
0

Ich habe derzeit einen Datenrahmen, der Adressdetails von bestimmten Ort hat. Ich möchte Google Geocode-API-Schlüssel verwenden, um die Koordinaten zu finden - Breite und Länge, um eine Karte zu plotten. Weiß jemand, wie man das macht? Ich habe den folgenden Code ausprobiert, aber es gibt 'Fehler, Adresse überspringen ...' auf allen Adressenzeilen zurück.Geocodierung in Python erhalten Breite und Länge von Adressen mit API-Schlüssel

Ich würde jede Hilfe sehr schätzen!

import pandas as pd 
import os 
from geopy import geocoders 
from geopy.geocoders import GoogleV3 

API_KEY = os.getenv("API1234") 
g = GoogleV3(api_key=API_KEY) 


loc_coordinates = [] 
loc_address = [] 

for address in df.Address: 
    try: 
     inputAddress = Address 
     location = g.geocode(inputAddress, timeout=15) 
     loc_coordinates.append((location.latitude, location.longitude)) 
     loc_Address.append(inputAddress) 
    except: 
     print('Error, skipping address...') 


df_geocodes = pd.DataFrame({'coordinate':loc_coordinates,'address':loc_address}) 
+0

Zwei Dinge vorne: 1. Dies ist möglicherweise nur ein Copy-Paste-Fehler aber Sie haben geschrieben '' 'inputAddress = Address''', wenn ich nehme an, Sie bedeuten' '' inputAddress = address''', um dieser Variable keinen Typ zuzuordnen, sondern die Variable Ihrer for-Schleife. 2. Anstatt "Error, hopping address ..." in der except-Klausel zu drucken, versuchen Sie, die tatsächliche Ausnahme zu finden, die Ihnen eher einen Hinweis gibt, was schief läuft (ich wette, es ist ein TypeError in der Zeile nach der inputAddress) Zuordnung). Sie würden '' 'außer Exception als e:' '' machen und dann Informationen über die tatsächliche Ausnahme ausdrucken. –

+0

Siehe auch [diese Frage] (https://stackoverflow.com/questions/18982610/difference-between-except-and-except-exception-as-e-in-python) für weitere Referenz. –

Antwort

0

Sie hatten ein paar Tippfehler: Address statt address, loc_Address statt loc_address.

Aber was ist df.Address?

Try this:

import pandas as pd 
import os 
from geopy import geocoders 
from geopy.geocoders import GoogleV3 

API_KEY = os.getenv("API1234") 
g = GoogleV3(api_key=API_KEY) 


loc_coordinates = [] 
loc_address = [] 
for address in df.Address: 
    try: 
     inputAddress = address 
     location = g.geocode(inputAddress, timeout=15) 
     loc_coordinates.append((location.latitude, location.longitude)) 
     loc_address.append(inputAddress) 
    except Exception as e: 
     print('Error, skipping address...', e) 


df_geocodes = pd.DataFrame({'coordinate':loc_coordinates,'address':loc_address}) 
+0

Vielen Dank dafür! df.Address df ist mein Datenframe, an dem ich gerade arbeite und Adresse ist die Spalte, in der ich versuche, den Längen- und Breitengrad zu erhalten – Harry

+0

Und wo deklarieren Sie df? Funktioniert es für Sie? –

+0

Ich habe es in der Reihe oben importiert pandas als pd importieren numpy als np df.Address = pd.read_csv ("") – Harry

Verwandte Themen