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

如何循环带参数列表的API请求并将结果存入单个DataFrame

解决循环API请求结果合并到单个DataFrame的问题

原代码存在的问题

  1. 未初始化dfMatchDetails,首次执行append会抛出变量未定义的错误
  2. 内层循环遍历pd.json_normalize返回的DataFrame列名,逻辑完全错误——pd.json_normalize直接返回结构化的DataFrame,不需要额外循环行/列
  3. 使用已被Pandas弃用的append方法,不仅效率低下,还可能引发兼容性问题

正确实现代码

import pandas as pd
import requests

# 初始化空列表,用于存储每个请求返回的小DataFrame
df_list = []

for match_id in LMID5:
    url = f'https://api.football-data-api.com/match?key=&match_id={str(match_id)}'
    rm = requests.get(url)
    print(url)
    
    # 检查请求是否成功,避免异常数据中断程序
    if rm.status_code == 200:
        data = rm.json().get('data')
        if data:
            # 归一化JSON数据为DataFrame
            temp_df = pd.json_normalize(data)
            # 将小DataFrame加入列表
            df_list.append(temp_df)
    else:
        print(f"请求失败,状态码: {rm.status_code},比赛ID: {match_id}")

# 将所有小DataFrame合并为一个大DataFrame
dfMatchDetails = pd.concat(df_list, ignore_index=True)

代码说明

  • 用列表df_list收集每个API请求返回的归一化DataFrame,比循环append效率提升显著
  • 增加请求状态码检查和数据非空判断,避免因API返回异常导致程序崩溃
  • 使用f-string拼接URL,比字符串相加更简洁易读
  • 最后用pd.concat一次性合并所有DataFrame,保证数据结构统一

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 17:25:25