You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将API所有响应的response属性存储至DataFrame?

问题解决:批量API响应存入DataFrame

原代码的核心问题

  1. 每次循环都会重置df3,导致之前的API响应数据被覆盖,最终仅保留最后一次结果
  2. requests.get(...).json()已经返回解析完成的JSON对象,无需再调用json.loads(),这会直接引发错误
  3. 没有精准提取API响应中的response子对象,而是处理了整个外层响应结构
  4. 循环内重复写入CSV,既低效又可能导致数据写入不完整

修正后的代码

import pandas as pd
import requests

# 初始化空列表,用来累加所有API返回的response对象
response_data = []

# 遍历df2的列(如果需要遍历列的具体值,改为 for x in df2['你的目标列名'].values)
for x in df2:
    param = str(x)
    # 注意:需将参数拼入URL,否则API无法接收请求参数
    url = f"https://api.com?param={param}"
    print(url)
    
    # 发送请求并直接解析JSON,无需二次解析
    api_response = requests.get(url, verify=False).json()
    
    # 提取response子对象并加入列表(增加判断避免键不存在报错)
    if 'response' in api_response:
        response_data.append(api_response['response'])

# 将所有收集到的response对象转为DataFrame
df3 = pd.DataFrame(response_data)
# 最终统一保存到CSV(index=False避免生成多余的索引列)
df3.to_csv('/Users/users3/Downloads/example.csv', index=False)

关键修正说明

  • 用列表response_data累加数据:相比每次循环拼接DataFrame,列表追加的效率更高,且不会覆盖之前的数据
  • 移除无效的json.loads()调用:requests.get().json()已经完成了JSON字符串到Python对象的解析
  • 精准提取response子对象:确保最终DataFrame只包含你需要的id、idType等属性
  • 统一写入CSV:避免循环内重复IO操作,提升效率同时保证数据完整性

内容的提问来源于stack exchange,提问作者Jonathan Adamson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 03:05:21