Python 如何传递多个输入值并将结果附加回数据帧
我有一个API,我应该向它传递一个值,并从API获取纬度和经度,然后连接回数据帧。API一次只允许传递一个值并检索该值。 我有大约100多个城市的名字,其中包括纬度和经度 我希望一次将一个输入传递给API,并将其存储到dataframe中,并与其他输出一起追加。如何通过迭代多个输入来实现这一点 输入数据帧Python 如何传递多个输入值并将结果附加回数据帧,python,python-3.x,pandas,api,dataframe,Python,Python 3.x,Pandas,Api,Dataframe,我有一个API,我应该向它传递一个值,并从API获取纬度和经度,然后连接回数据帧。API一次只允许传递一个值并检索该值。 我有大约100多个城市的名字,其中包括纬度和经度 我希望一次将一个输入传递给API,并将其存储到dataframe中,并与其他输出一起追加。如何通过迭代多个输入来实现这一点 输入数据帧 Input.head(4) ID CITY 23 Lyon 45 Paris 56 Mumbai 76 Chennai API数据检索代码
Input.head(4)
ID CITY
23 Lyon
45 Paris
56 Mumbai
76 Chennai
API数据检索代码
import requests
headers = {
'accept': 'application/json',
'Content-Type': 'application/json',
'Authorization': 'Api-Key XXXXXXXXXXXXXXXXX',
}
params = (
('provider', 'google'),
)
data = '{ "address": "Singapore"}'
response = requests.post('https://example.com/geocoder/geocode', headers=headers, params=params, data=data)
import json
d = json.loads(response.text)
df =pd.DataFrame([d['position']])
我的预期产出
ID CITY lat lon
23 Lyon 1.352 103.819
45 Paris 1.456 117.345
56 Mumbai 1.345 118 .675
76 Chennai 1.678 117.678
来自API的样本响应
'{"position": {"lat": 1.352083, "lon": 103.819836}, "mapView": {"N": 1.4784001, "E": 104.0945001, "S": 1.1496, "W": 103.594}}\n'
这将输出:
ID City lat lon
0 23 Lyon 1.352083 103.819836
1 45 Paris 1.352083 103.819836
2 56 Mumbai 1.352083 103.819836
3 76 Chennal 1.352083 103.819836
基本上,创建两个dictlat_data
和lon_data
,然后在一个循环中遍历所有城市,并将城市名称作为键以及纬度和经度数据存储在创建的两个dict中
然后将其映射回您的pandas数据帧,如sodf['lat']=df['City'].map(lat_数据)
这将输出:
ID City lat lon
0 23 Lyon 1.352083 103.819836
1 45 Paris 1.352083 103.819836
2 56 Mumbai 1.352083 103.819836
3 76 Chennal 1.352083 103.819836
基本上,创建两个dictlat_data
和lon_data
,然后在一个循环中遍历所有城市,并将城市名称作为键以及纬度和经度数据存储在创建的两个dict中
然后把它映射回你的pandas数据框,比如so
df['lat']=df['City'].map(lat_数据)
我也有类似的问题。你能提供一个样本response.text
从api返回的文本?@bhaskarc,'{“position”:{“lat 1.352083,“lon”:103.819836},“mapView”:{“N”:1.4784001,“E”:104.0945001,“S”:1.1496,“W”:103.594}\n'
。我也与sameI一起更新了这个问题,sameI也有类似的问题。你能提供一个样本回答吗?文本从api返回?@bhaskarc,{“位置”:{“lat”:1.352083,“lon”:103.819836},“mapView”:{“N”:1.4784001,“E”:104.0945001,“S”:1.1496,“W”:103.594}\N'
。我还更新了同样的问题,我如何用你的代码取代这种代码的和平?data='{“address”:“Singapore”}
我是否应该用data='{“address”:“Singapore”}
数据='{“address”:“cities”}
yesintheloop替换为数据='{“address”:city}'。不是城市,也不在报价范围内。注意,我们在城市中循环,在每个循环中,变量cityI中都有城市名称。粘贴另一个工件代码时,出现错误。params=(^IndentationError:意外缩进
。如果可能,您可以使用正确的缩进修改示例吗?这是一个完全有效的代码。缩进错误发生在您的端部。如果您只是复制粘贴并运行我的代码,它将立即生效。错误在代码中的params=(^IndentationErro
,我该如何用你的代码取代这种代码的和平data='{“address”:“Singapore”}
我应该用data='{“address”:“Singapore”}取代data='{“address”:“cities”}
yes in-in-loop替换为data='{“address”:city}“。不是城市,也不在报价内。请注意,我们在城市之间循环,在每个循环中,变量city中都有城市名称。粘贴另一件代码时,我遇到了一个错误。params=(^IndentationError:意外缩进
。如果可能,您可以使用正确的缩进修改示例吗这是一个完全有效的代码。缩进错误发生在您的端部。如果您只是复制粘贴并运行我的代码,它将立即生效。错误在代码的params=(^IndentationErro