2017-12-17 3 views
0

Ich arbeite derzeit an einem Projekt, das untersucht, wie standardisierte Tests in New York City reichen. Ich habe einen Datensatz, der eine Bezirksbezirksnummer (DBN) angibt, aber keine Adresse angibt. Wenn ich den DBN auf Google suche, gibt es die genaue Adresse jeder Highschool.Verwenden Sie den Geocoder, um einen Nicht-Adressenpunkt zu finden, einzelne Komponenten zurückzugeben und dann an den aktuellen Datenrahmen anzuhängen?

Ich bin neu in Pandas so bitte bitte mit mir. Ich habe versucht, einen Geocoder durch die Spalte der Bezirksbürozahlen laufen zu lassen und dann die Ausgabe an den aktuellen Datenrahmen anzuhängen.


import pandas as pd 
import geocoder 
from googlegeocoder import GoogleGeocoder 

url="https://raw.githubusercontent.com/linnaha/NYCdata/master/sat_2014.csv" 
      satdata = pd.read_csv(url, encoding='latin-1') 
      satdata.head() 

image of sample data


geocoder = GoogleGeocoder() 
list_of_dbn = satdata['DBN'] 


for address in list_of_dbn: 
    try: 
     search = geocoder.get(address) 
    except ValueError: 
     continue 
    first_result = search[0] 
    output =first_result.formatted_address 
    print(output) 
    satdata["zip_code"]= output 

er die Liste durchläuft und gibt Adressen


220 Henry St, New York, NY 10002, USA 
200 Monroe St, New York, NY 10002, USA 
420 E 12th St, New York, NY 10009, USA 
198 Forsyth St, New York, NY 10002, USA 
145 Stanton St, New York, NY 10002, USA 
145 Stanton St, New York, NY 10002, USA 
111 Columbia St, New York, NY 10002, USA 
198 Forsyth St, New York, NY 10002, USA 
525 E Houston St, New York, NY 10002, USA 
225 E 23rd St, New York, NY 10010, USA 
525 W 50th St, New York, NY 10019, USA 
350 Grand St, New York, NY 10002, USA 

Aber wenn ich wieder auf den Datensatz aus, es wiederholt sich nur die gleiche Adresse für alle Zeilen. see here


Schließlich, wenn es an der Arbeit ist, wie würde ich die Saite der Lage Split sein, nur die Postleitzahl und Stadt haben? Das habe ich ausprobiert. Ich habe auch versucht, Nominatim zu verwenden, aber es erkennt die DBN nicht.


new_list = [] 
for var in satdata.zip_code: 
    new_list.append(var.rsplit(maxsplit = 1)[0].replace(" ","_")) 
satdata.zip_code = new_list 

145_Stanton_St,_New_York,_NY_10002, 

Antwort

0

Bei jeder Iteration der for-Schleife Sie die gesamten "zip_code" mit output

satdata["zip_code"]= output 

so dass der Ausgang mit dem gleichen Wert in alle Reihe überschreiben ist leicht erklärt. Sie könnten initialisieren:

satdata["zip_code"]='' 

und tun dann

satdata.loc[satdata['DBN']==adress,"zip_code"]= output 

in der for-Schleife. Lassen Sie mich wissen, wenn das funktioniert

+1

Ja! Tut mir leid, ich bin neu in diesem Bereich. Ich danke dir sehr. – Linna

Verwandte Themen