遍历DataFrame参数发起API GET请求并将JSON结果存入DataFrame
遍历Pandas DataFrame生成API请求并合并返回结果
以下是实现需求的完整代码方案,包含参数替换、API请求、结果合并的全流程:
步骤1:导入依赖库
import pandas as pd import requests
步骤2:配置基础参数与请求模板
替换占位符为你的实际API配置:
HOST = "https://your-real-api-host.com" VERSION_CLIENT = "v1" CLIENT_TOKEN = "your-valid-client-token" # 修正请求模板格式(GET请求参数需用?开头、&分隔) request_template = f"{HOST}/client/{VERSION_CLIENT}/?access_token={CLIENT_TOKEN}¶mA={{paramA}}¶mB={{paramB}}¶mC={{paramC}}"
步骤3:构造原始DataFrame
# 你的原始参数数据 raw_data = { "paramA": ["xyz", "xyy"], "paramB": [123, 122], "paramC": ["abc", "abb"] } df = pd.DataFrame(raw_data)
步骤4:定义API请求处理函数
加入异常捕获,避免单个请求失败中断整个流程:
def get_api_response(row): # 用当前行参数替换模板占位符 request_url = request_template.format(**row.to_dict()) try: response = requests.get(request_url) response.raise_for_status() # 触发HTTP错误(如404、500) return response.json() except Exception as e: # 请求失败时记录错误信息 return {"request_error": str(e)}
步骤5:执行请求并合并结果
# 对每行数据发送API请求,生成响应结果列 df["api_response"] = df.apply(get_api_response, axis=1) # 可选:将JSON响应展开为单独列(方便后续分析) df = pd.concat([df, df["api_response"].apply(pd.Series)], axis=1) # 可选:删除临时的api_response列(不需要保留原始JSON时) # df.drop("api_response", axis=1, inplace=True)
关键说明
- 用
**row.to_dict()将行数据转为键值对,直接填充请求模板,避免手动拼接参数出错 - 异常处理确保单条请求失败时,整个流程不会终止,错误信息会被记录到结果中
- 展开JSON响应为列后,可直接对返回字段进行筛选、分析操作
内容的提问来源于stack exchange,提问作者shj997
相关产品推荐
相关产品推荐

