簡體   English   中英

使用涉及函數的Python將DataFrame填充到for循環中

[英]Fill DataFrame in for loop with Python involving a function

我想從Mapzen檢索地理數據(長/緯度)以獲取德國的地址。 Mapzen提供了一個要求輸入密鑰的API。 每個請求都返回一個Json。

以下代碼返回一個地址的長/低和地址名稱:

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})

我嘗試替換txt參數以對其進行循環,但是只要我了解request.get方法無法被循環即可。 因此,我遵循了這種方法,並定義了一個我在for循環中使用的函數。

我想要for循環做的是將一行的字符串粘貼到函數中txt參數中的地址中。 這應該完成n次,而n是地址向量的長度。 檢索到的信息(長/緯度/地址)應添加到AllAddresses數據幀的新行中。 因此,最后我有一個包含三個列(“ Long”,“ Lat”,“ Street”)的DataFrame,在這種情況下為三行。

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

但是,此代碼返回錯誤:

TypeError: 'Series' object is not callable

我讀到,繁瑣的路要走,但我來自R,在這里感到有些迷茫。

沒有明顯的原因,Addresses是一個熊貓數據框。 然后,您需要對其進行迭代,如果您不需要熊貓數據框,那么通常這是一個壞主意。 然后,將“ row”作為一個序列,並像函數row(“ 0”)一樣調用它。 由於它不是函數,因此會出現錯誤。 只需列出地址即可解決您的第一個問題。

然后,您當然會發現Full出現了問題,它也不必是數據幀。 您不能添加這樣的行; 並且您正在為每一行返回一個數據框,這可能也不是您想要的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM