gpt4 book ai didi

python - 如何传递多个输入值并将结果附加回 pandas 数据框

转载 作者:太空宇宙 更新时间:2023-11-04 01:47:04 24 4
gpt4 key购买 nike

我有一个 API,我应该向其传递一个值并从 API 返回纬度和经度并将其附加回数据框。 API 一次只允许传递一个值并检索该值。我有大约 100 多个城市名称可以获取纬度和经度。

我想一次将一个输入传递给 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'

最佳答案

import pandas as pd
import json
ids = [23,45,56,76]
cities = ['Lyon','Paris','Mumbai','Chennal',]
lat_data = {}
lon_data = {}
df = pd.DataFrame( list(zip(ids, cities)), columns =['ID', 'City'])

for city in cities:
#this is where you run your api calls
headers = {
'accept': 'application/json',
'Content-Type': 'application/json',
'Authorization': 'Api-Key XXXXXXXXXXXXXXXXX',
}
params = ( ('provider', 'google'),)
data = '{ "address":' + city + '}'
response = '{"position": {"lat": 1.352083, "lon": 103.819836}, "mapView": {"N": 1.4784001, "E": 104.0945001, "S": 1.1496, "W": 103.594}}\n'
j = json.loads(response)
lat_data[city] = j["position"]["lat"]
lon_data[city] = j["position"]["lon"]

df['lat'] = df['City'].map(lat_data)
df['lon'] = df['City'].map(lon_data)

print(df)

这将输出:

   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

基本上,创建两个字典 lat_datalon_data,然后循环遍历所有城市,并将城市名称作为键和经纬度数据存储在创建的两个字典中.

然后像这样将其映射回您的 pandas 数据框 df['lat'] = df['City'].map(lat_data)

关于python - 如何传递多个输入值并将结果附加回 pandas 数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58868926/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com