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

Jupyter中调用API创建Pandas DataFrame出现TypeError的解决方法

错误原因

  • 核心报错来自data = json.load(open(r))这一行:requests.get(url).json()已经将接口返回的JSON字符串直接解析为Python字典类型,不需要再调用json.load()+open()的读文件逻辑处理。open()仅支持传入本地文件路径,不能传入字典对象,因此触发类型错误。
  • 次要问题:拼接URL时存在换行,会生成带多余空格的无效URL,导致请求失败。

修正后的完整代码

import requests
import pandas as pd

def callAPI(drug_name, recievedate_from, recievedate_to):
    # 修正URL拼接逻辑,避免多余空格
    url = f'https://api.fda.gov/drug/event.json?search=(receivedate:[{recievedate_from}+TO+{recievedate_to}])+AND+{drug_name}'
    # 发送请求
    resp = requests.get(url)
    # 新增请求状态校验,接口异常时直接抛出明确错误方便定位
    resp.raise_for_status()
    # 直接使用已经解析好的字典数据
    data = resp.json()
    df = pd.DataFrame(data["results"])
    print(df)
    
callAPI('PREDNISOLONE', 20040101, 20210629)

修改说明

  • 删掉冗余的json模块导入和错误的json.load(open(r))逻辑,直接使用requests内置json()方法返回的字典数据
  • 用f-string简化URL拼接,避免手动拼接字符串时的换行空格问题
  • 新增resp.raise_for_status()校验,接口返回4xx/5xx错误时会直接抛出明确的请求异常,方便定位问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 17:39:04