python - 如何在 HTTP 请求中使用 pandas DF 作为参数
问题描述
我有一个来自 excel 文件的地点列表,我会用地名 ID 来丰富它。从 excel 文件开始,我制作了一个 pandas 数据框,然后我将使用 DF 中的值作为我的请求中的参数。这是我制作的脚本
import pandas as pd
import requests
import json
require_cols = [1]
required_df = pd.read_excel('grp.xlsx', usecols = require_cols)
print(required_df)
url = 'http://api.geonames.org/searchJSON?'
params = { 'username': "XXXXXXXX",
'name_equals': (required_df),
'maxRows': "1"}
e = requests.get(url, params=params)
pretty_json = json.loads(e.content)
print (json.dumps(pretty_json, indent=2))
问题与此参数的定义有关:
'name_equals': (required_df)
我将使用 DF 中的 Places(大约 15k)作为参数,并递归地检索相关的地理名称 ID,并将输出写入单独的 excel 文件中。
简单的请求有效:
import requests
import json
url = 'http://api.geonames.org/searchJSON?'
params = { 'username': "XXXXXXX",
'name_equals': "Aire",
'maxRows': "1"}
e = requests.get(url, params=params)
pretty_json = json.loads(e.content)
print (json.dumps(pretty_json, indent=2))
#print(e.content)
以及 Pandas 数据框的定义:
# import pandas lib as pd
import pandas as pd
require_cols = [0,1]
# only read specific columns from an excel file
required_df = pd.read_excel('grp.xlsx', usecols = require_cols)
print(required_df)
我也尝试通过SPARQL没有结果,所以我决定通过 Python。
谢谢你的时间。
解决方案
您可以使用for
-loop
import pandas as pd
df = pd.DataFrame({'Places': ['London', 'Paris', 'Berlin']})
for item in df['Places']:
print('requests for:', item)
# ... rest of code ...
或者df.apply()
import pandas as pd
def run(item):
print('requests for:', item)
# ... rest of code ...
return 'result for ' + item
df = pd.DataFrame({'Places': ['London', 'Paris', 'Berlin']})
df['Results'] = df['Places'].apply(run)
推荐阅读
- javascript - 如何在浏览器(非移动设备)中显示本地 pdf 文件
- c - strset 函数在
, C - tensorflow - 如何在不拉取结果的情况下运行 tf.assign 操作
- python - response.xpath 和 response.css 有什么区别
- php - 插入数据后的消息
- angularjs - 未捕获的错误:[$injector:modulerr] http://errors.angularjs.org/1.6.9/$injector/modulerr
- java - Spring - 如何在运行时将 URL 中的请求参数映射到 POJO?
- wordpress - 在循环中显示分类 acf 字段
- c# - 事件发生后在 WPF 中调整形状的大小
- python - 为什么芹菜任务不起作用?