python - 动态存储API数据

标签 python json pandas api

我必须从 API 中提取数据并返回包含所需信息的报告。 例如:

request_data = {'url1 : https://abcd.com','url2 : https://dfgh.com','url3 : https://hjkl.com',column : (name,Ecode,salary,status)}

x1 =  '{ "name":"John", "age":30, "city":"New York"}'

x2 = '{ "name":"John", "age":30, "Ecode":"4567"}'

x3 = '{ "name":"John", "salary":30k, "Status":"Yes"}'

这里 request_data 是我通过消息队列收到的 get 请求,x1,x2,x3 是我们从 python 运行 get 请求后得到的值。一旦我们获得数据,我将其转换为 pandas 数据框并使用 pandas 数据框合并创建一个新的数据框。

但是get请求中url的数量不会是3。它将是2,5,1等。因此我们不能明确地将变量命名为x1,x2,x3作为存储数据的变量。

我想让代码更加动态,以便我们从消息队列获得任意数量的 url 请求,我们需要从这些 url 获取数据并创建一个包含所需列的新数据框。

有人可以在这里帮助我或指出一些引用链接。

最佳答案

您可以首先创建一个名为cumulative_df的空数据框,您可以在其中收集不同API调用的响应。

然后,循环遍历 URL 列表;在循环内,对于每个 URL:

  1. 进行 API 调用(例如,通过使用 requests 库)。
  2. 将 JSON 响应转换为数据帧(例如,使用 pandas.json_normalize )
  3. 将 json_normalize 创建的数据帧添加到cumulative_df(例如,使用 pandas.concat )

可以对列表中任意数量的网址执行此操作。

编辑:如果数据帧无法连接/附加,您可以使用计数器来命名变量并在循环内将数据帧分配给它。首先,'x'+str(i) 将得到 x1。然后将计数器加 1,循环的下一个实例将创建 x2,依此类推。

关于python - 动态存储API数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70491794/

相关文章:

python - 在 Python/Pandas 中计算两行之间的差异

ios - 使用 NSJSONSerialization 时从 NSDictionary 获取 null

python - Pandas groupby 年份和绘图图

python - 将包含单词及其位置的文本文件变成句子

python - 单击圆圈内的任意位置时,使用 Python 验证鼠标位置是否在圆圈内。

python - 单击项目 View 的空白区域时清除选择

python - 无法通过 LAN 发送以太网包

java - 如何从URL获取数据并将其转换为json?

Python 替换嵌套 JSON 中的 None 值

python - Pandas /Python : Replace multiple values in multiple columns