从嵌套字典创建数据框

我正在调用一个 API,该 API 以 JSON 格式返回多个股票行情的批处理请求。它是一个嵌套字典,具有 2 级键和一个字典列表。这是脚本:


import json

import requests

import pandas as pd


r = requests.get('https://api.iextrading.com/1.0/stock/market/batch?symbols=aapl,wpx,mnro,twnk,labl,plnt,fsct,qyls,vrns,tree&types=chart&range=3m')


x = r.json()


llist = [*x.keys()]


df=[]

for l in llist:

    df.append(pd.DataFrame.from_dict({(i,j): x[i][j] 

                               for i in x.keys() 

                               for j in x[i].keys()},

                           orient='index'))

df_concat = pd.concat(df, axis=1)

这是示例格式:


{'AAPL': {'chart': [{'change': 0.129548,

    'changeOverTime': 0,

    'changePercent': 0.06,

    'close': 217.6107,

    'date': '2018-09-19',

    'high': 218.8564,

    'label': 'Sep 19, 18',

    'low': 214.5514,

    'open': 217.7403,

    'unadjustedVolume': 27123833,

    'volume': 27123833,

    'vwap': 216.6509}

我想从中创建一个数据框,其中所有内容都按 Ticker 分组,并按 Date 与其他变量排序,例如:'open'、'close'、'volume' 用作具有相关值的列在行中。到目前为止,示例输出如下所示:


                          0                           1              

(AAPL, chart)   {'volume': 27123833,        {'volume': 26608794,

                 'close': 118.21,...         'close': 120.11,...

(WPX, chart)    {'volume': 1098766,         {'volume': 993465,

                 'close': 13.23,...          'close': 14.68,...

清理这些数据和“解锁”字典列表的最佳和最有效的方法是什么?提前致谢!


慕码人2483693
浏览 173回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python