2016-12-31 7 views
0

ドイツの住所のMapzenから地理データ(long/lat)を取得したいと思います。 Mapzenはキーを要求するAPIを提供します。各要求はJsonを返します。関数を含むPythonのforループでDataFrameを埋めてください

これ以下のコードは、1つのアドレスのための長い/緯度および住所名前を返します。私はそれをループにtxtの引数を交換しようとした

import pandas as pd 
import request 

BASE_URL = 'https://search.mapzen.com/v1/search' 
txt = 'Stübekamp 33, Hamburg, Germany' 
resp = requests.get(BASE_URL, params = {'api_key': "YourKey", 'size': 1, 'text': txt}) 
data = resp.json() 
Full = pd.DataFrame(columns=["Long", "Lat", "Street"]) 
LongLat = data["bbox"][0:2] 
Street = data["features"][0]["properties"]["label"] 
Full.loc[1] = pd.Series({"Long": LongLat[1], "Lat": LongLat[0], "Street": Street}) 

、しかし限り、私はrequest.get方法を理解していないことができますループする。したがって、私はthisのアプローチに続き、forループで使用する関数を定義しました。

私がループにしたいのは、関数内のtxt引数のアドレスに1行の文字列を貼り付けることです。これはn回実行する必要がありますが、nはアドレスベクトルの長さです。検索された情報(long/lat/address)は、AllAddresses DataFrameの新しい行に追加する必要があります。だから私は3つの列( "ロング"、 "緯度"、 "ストリート")とこの場合3行のDataFrameを持っています。

TypeError: 'Series' object is not callable 

私はiterrowsが進むべき道であることを読んで、私はRから来て、ここで失われた少しを感じています:

def Getall(Input): 
    resp = requests.get('https://search.mapzen.com/v1/search', params = {'api_key': "YourKey", 'size': 1, 'text': Input}) 
    data = resp.json() 
    LongLat = data["bbox"][0:2] 
    Street = data["features"][0]["properties"]["label"] 
    Full = pd.DataFrame(columns=["Long", "Lat", "Street"]) 
    Full.loc[1] = pd.Series({"Long": LongLat[1], "Lat": LongLat[0], "Street": Street}) 

    return Full 


addresses = pd.DataFrame(["Stübekamp 33, Hamburg, Germany", "Mesterfeld 28, Hamburg, Germany","Beutnerring 2, Hamburg, Germany"]) 


AllAddresses = [] 
for index, row in addresses.iterrows(): 
    Input = row("0") 
    data = Getall(Input) 
    AllAddresses.append = data 

しかし、このコードは、エラーを返します。

答えて

1

アドレスは明らかな理由がないため、パンダのデータフレームです。その後、あなたはあなたがしないパンダのデータフレームが必要な場合は、一般的に悪い考えであることを繰り返します。次に、系列である「行」を取り、それを関数行(「0」)のように呼び出します。関数ではないので、エラーが発生します。あなたの最初の問題を解決するためのアドレスをリストにするだけです。

もちろん、データフレームである必要のないFullについても問題があることがわかります。そのような行を追加することはできません。また、各行のデータフレームが返ってくる可能性があります。

+0

私は今、私の問題を参照してください。私はパンダのデータフレームにも集中していました。ありがとう! – CFM

関連する問題