python - 从 JSON 到 pd 数据框 python 的 Marketstack 数据
问题描述
我想将 marketstack api 的“日内”输出从 JSON 转换为 pd 数据帧,但出现以下错误:
data = r.json()['intraday']
KeyError: 'intraday'
我使用的 Python 代码:
r = requests.get('http://api.marketstack.com/v1/tickers/AAPL/intraday?access_key=KEY')
x = r.json()
data = r.json()['intraday']
df = pd.DataFrame.from_dict(data)
print(df)
API(r)的输出:
{'pagination': {'limit': 100, 'offset': 0, 'count': 100, 'total': 4279}, 'data': {'name': 'APPLE INC', 'symbol': 'AAPL', 'has_intraday': True, 'has_eod': False, 'country': None, 'stock_exchange': {'name': 'Investors Exchange', 'acronym': 'IEX', 'mic': 'IEXG', 'country': 'USA', 'country_code': 'US', 'city': 'New York', 'website': 'www.iextrading.com'}, 'intraday': [{'open': 113.73, 'high': 116.55, 'low': 112.88, 'last': 113.84, 'close': 115.04, 'volume': 1293135.0, 'date': '2020-10-26T18:00:00+0000', 'symbol': 'AAPL', 'exchange': 'IEXG'}, {'open': 113.73, 'high': 116.55, 'low': 113.59, 'last': 113.9, 'close': 115.04, 'volume': 1027116.0, 'date': '2020-10-26T17:00:00+0000', 'symbol': 'AAPL', 'exchange': 'IEXG'}, {'open': 113.73, 'high': 116.55, 'low': 113.59, 'last': 114.885, 'close': 115.04, 'volume': 506229.0, 'date': '2020-10-26T15:00:00+0000', 'symbol': 'AAPL', 'exchange': 'IEXG'}, {'open': 113.73, 'high': 115.855, 'low': 113.59, 'last': 115.69, 'close': 115.04, 'volume': 223879.0, 'date': '2020-10-26T14:00:00+0000', 'symbol': 'AAPL', 'exchange': 'IEXG'}, {'open': 113.73, 'high': 113.83, 'low': 113.59, 'last': 113.65, 'close': 115.04, 'volume': 930.0, 'date': '2020-10-26T13:00:00+0000', 'symbol': 'AAPL', 'exchange': 'IEXG'}
如果有人有解决方案会很棒,在此先感谢!
解决方案
您也可以json_normalize
在这里使用:
df = pd.json_normalize(r, record_path=['data', 'intraday'], meta=[['data', 'name'], ['data', 'symbol']])
print(df)
open high low last close volume date symbol exchange data.name data.symbol
0 113.73 116.550 112.88 113.840 115.04 1293135.0 2020-10-26T18:00:00+0000 AAPL IEXG APPLE INC AAPL
1 113.73 116.550 113.59 113.900 115.04 1027116.0 2020-10-26T17:00:00+0000 AAPL IEXG APPLE INC AAPL
2 113.73 116.550 113.59 114.885 115.04 506229.0 2020-10-26T15:00:00+0000 AAPL IEXG APPLE INC AAPL
3 113.73 115.855 113.59 115.690 115.04 223879.0 2020-10-26T14:00:00+0000 AAPL IEXG APPLE INC AAPL
4 113.73 113.830 113.59 113.650 115.04 930.0 2020-10-26T13:00:00+0000 AAPL IEXG APPLE INC AAPL
推荐阅读
- html - 如何给 Bootstrap col 动态高度?
- sql - BigQuery:如何删除具有相同数据的 2 列的行?
- sql - 按 LEFT(code, 4) 分组并选择其中一个描述为 1
- flutter - 为 Chart_Flutter 依赖项实现数据工具提示时出错
- azure - 如何在 Azure DevOps 的“deployment.template.json”中替换 IoT Edge 环境变量
- django - 在 MariaDB 10.5.8 上运行 Django 迁移时出现问题
- c++ - c ++制作具有未知大小数组的结构(内存位置完整)用于传递缓冲区数据
- javascript - Flutter WebView blob 文件下载
- terraform - 在 terraform 中通过 helm 安装 Spinnaker
- angular8 - 如何在角度 ng-select 模型中显示默认占位符?