python - Python json 规范化 API 请求
问题描述
我收到 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]}
我想创建一个包含以下列(跳过列)和浮点单元格值的数据框:
c| h| l| o| t| v
277.775| 277.89| 277.67| 277.69| 1587412320| 0
...
我尝试了一些类似的东西 json_normalize(dataAPI, 'c')
但这给了我一条错误消息 TypeError: byte indices must be integers or slices, not 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)
输出:
推荐阅读
- c# - 不会解雇hangfire中的重复作业
- ruby-on-rails - NodeJS 和 ORM?
- ruby-on-rails - elasticbeanstalk中延迟作业轨道中的文件权限错误
- c++ - 在完美转发函数中公开参数类型,避免代码重复
- javascript - 使用javascript基于光标缩放
- javascript - 我们可以通过表格操作动态设置轴的范围吗?
- ios - ios:条件绑定的初始化程序必须具有可选类型,而不是“LOTAnimationView”
- javascript - 是否有任何简短且最佳的方法可以在页面加载后一次性加载一组所需的 javascript 和其他 Javascript 文件?
- javascript - 物化TextArea不是动态变化的吗?
- java - 如何在 mockito 中模拟 servlet 上下文