2017-12-17 12 views
0

私は現在、ニューヨーク市のボランティアの標準化されたテスト範囲をどのように見ているかを調べるプロジェクトに取り組んでいます。地区ボラウナナンバー(DBN)を提供するデータセットがありますが、アドレスは与えられていません。 GoogleでDBNを検索すると、各高校の正確な住所が表示されます。ジオコーダを使用して非アドレスポイントを検索し、個々のコンポーネントを返し、現在のデータフレームに追加しますか?

私はパンダには新しいので、私に同行してください。私はジオコーダーを地区ボロの番号の列に通して、現在のデータフレームに出力を付加させようとしました。


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 

それはリストを経て、アドレス

01を返します。
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 

しかし、私は再びデータセットを見ると、それだけですべての行で同じアドレスを繰り返します。 see here


最後にそれが動作した場合、どのように私は郵便番号や都市を持っている文字列ができ、スプリットでしょうか?これが私が試したことです。私はNominatimを使ってみましたが、DBNを認識しません。あなたのループのためにあなたが

satdata["zip_code"]= output 

ので、すべての行で同じ値で出力output

で全体 "zip_code"を上書きしているのすべての反復で


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, 

答えて

0

簡単に説明します。

satdata["zip_code"]='' 

をして、forループで

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

の操作を行います。 あなたは初期化できます。 それが動作すれば教えてください

+1

はい!申し訳ありませんが、私はこれに新しいです。どうもありがとうございます。 – Linna

関連する問題