Python json规范化API请求

标签 python json pandas normalize

我收到 JSON 格式的数据,但很难将它们转换成合适的格式。希望您能够帮助我。

import pandas as pd

from pandas.io.json import json_normalize

import requests

dataAPI = requests.get('here is the API URL')

print(dataAPI.json()) 

给我以下输出:

{'c': [277.775, 277.76, 277.65, 277.64, 277.5215], 'h': [277.89, 278.06, 277.98, 277.
76, 277.98], 'l': [277.67, 277.71, 277.59, 277.42, 277.472], 'o': [277.69, 277.795, 277.77, 277.66, 277.72], 's': 'ok', 't': [1587412320, 1587412380, 1587412440, 1587412500, 1587412560, 1587412620, ], 'v': [0, 142752, 133100, 259539, 0]}

我想创建一个包含以下列(跳过 s 列)和 float 单元格值的数据框:

c| h| l| o| t| v

277.775| 277.89| 277.67| 277.69| 1587412320| 0

...

我尝试了一些类似的方法 json_normalize(dataAPI, 'c')

但这给了我一个错误信息 类型错误:字节索引必须是整数或切片,而不是 str

非常感谢您的帮助

最佳答案

你必须定义你想要的列,而不仅仅是使用 pandas.concat:

j = {'c': [277.775, 277.76, 277.65, 277.64, 277.5215], 'h': [277.89, 278.06, 277.98, 277.76, 277.98], 'l': [277.67, 277.71, 277.59, 277.42, 277.472], 'o': [277.69, 277.795, 277.77, 277.66, 277.72], 's': 'ok', 't': [1587412320, 1587412380, 1587412440, 1587412500, 1587412560, 1587412620, ], 'v': [0, 142752, 133100, 259539, 0]}
columns = {'c', 'h', 'l',  'o', 't', 'v'}
pd.concat([pd.DataFrame({k: v}) for k, v in j.items() if k in columns], axis=1)

输出:

enter image description here

关于Python json规范化API请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61331910/

相关文章:

c# - 为什么这种明显的无限递归不给出编译器警告?

python - Tkinter,一次处理多个帧,每个帧中都有按钮。但是按钮忽略了给定的框架,只使用网格

jquery - 等待 JSON 数据被解析

python - pandas 数据框中每天每个类别的运行总计

python - Pandas 在一个月的一天时间从字符串的其余部分 split

python - 使用 thread.join 确保所有线程都加入时,Pydev PyUnit 出现问题

python - 更新 Python 中的 For Each 循环

Python高效过滤dict的方法

javascript - 使用 NodeJS 获取 API 数据并写入 MongoDB

python - 如何用新名称替换特定标点符号?