我必须从 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:
- 进行 API 调用(例如,通过使用 requests 库)。
- 将 JSON 响应转换为数据帧(例如,使用 pandas.json_normalize )
- 将 json_normalize 创建的数据帧添加到cumulative_df(例如,使用 pandas.concat )
可以对列表中任意数量的网址执行此操作。
编辑:如果数据帧无法连接/附加,您可以使用计数器来命名变量并在循环内将数据帧分配给它。首先,'x'+str(i) 将得到 x1。然后将计数器加 1,循环的下一个实例将创建 x2,依此类推。
关于python - 动态存储API数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70491794/