从Jupyter笔记本中的API端点创建数据帧

2024-10-01 05:00:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试将API转换为数据帧

示例API:https://api.fda.gov/drug/event.json?search=(receivedate:[20040101+TO+20210629])+AND+PREDNISOLONE

这是我的密码:

import json
import requests
import pandas as pd

def callAPI(drug_name, recievedate_from, recievedate_to):

    url='https://api.fda.gov/drug/event.json?search=(receivedate: 
    ['+str(recievedate_from)+'+TO+'+str(recievedate_to)+'])+AND+'+str(drug_name)
    r = requests.get(url).json()
    data = json.load(open(r))
    df = pd.DataFrame(data["results"])
    print(df)
    
callAPI('PREDNISOLONE', 20040101, 20210629)

我得到一个错误:

TypeError: expected str, bytes or os.PathLike object, not dict

我怎样才能把它做好


Tags: andtohttpsimporteventapijsonsearch
1条回答
网友
1楼 · 发布于 2024-10-01 05:00:38
  • 既然response.json()已经调用了json.loads(),你不应该自己调用它
  • 将JSON放入数据帧的最简单方法是json_normalize()
  • 我还展示了如何在返回的结构中展开嵌入式列表
import requests

res = requests.get("https://api.fda.gov/drug/event.json?search=(receivedate:[20040101+TO+20210629])+AND+PREDNISOLONE")

df = pd.json_normalize(res.json()["results"])
dfpr = df["patient.reaction"].explode().apply(pd.Series)
dfpd = df["patient.drug"].explode().apply(pd.Series)

相关问题 更多 >