熊猫:将JSON转换为熊猫数据帧

熊猫:将JSON转换为熊猫数据帧,json,python-3.x,pandas,dataframe,Json,Python 3.x,Pandas,Dataframe,专家们 我在将Json解析为Pandas并将其保存为CSV格式时遇到问题 data2 = {"date":"2018-01-02","data":{"AAPL":{"open":"170.16","close":"172.26","high":"172.30","low":"169.26","volume":"25555934"},"MSFT":{"open":"86.13","close":"85.95","high":"86.31","low":"85.50","volume":"22483

专家们

我在将Json解析为Pandas并将其保存为CSV格式时遇到问题

data2 = {"date":"2018-01-02","data":{"AAPL":{"open":"170.16","close":"172.26","high":"172.30","low":"169.26","volume":"25555934"},"MSFT":{"open":"86.13","close":"85.95","high":"86.31","low":"85.50","volume":"22483797"}}}
如果我尝试:

df = pd.DataFrame.from_dict(json_normalize(data2), orient='columns')
print(df)
所有内容都在一行中打印:

如果我这样做:

jdata = json.loads(data2)
df = pd.DataFrame(jdata)
print(df.T)
我得到一个错误:TypeError:JSON对象必须是str、bytes或bytearray,而不是'dict'

我希望以下表格式打印,以便将其保存为csv:

Date        Data    Open    Close   High    Low     Volume
2018-01-02  AAPL    170.16  172.26  172.30  169.26  25555934
2018-01-02  MSFT    86.13   85.95   86.31   85.50   22483797
实现我的目标的正确方法是什么


谢谢

我将使用您的原始输出并修改它

s=pd.DataFrame(data2)
pd.concat([s.drop('data',1),pd.DataFrame(s.data.tolist(),index=s.index)],1)
            date   close    high     low    open    volume
AAPL  2018-01-02  172.26  172.30  169.26  170.16  25555934
MSFT  2018-01-02   85.95   86.31   85.50   86.13  22483797

您可以使用
apply
将dict键转换为系列

df = pd.DataFrame.from_dict(data2)
df = pd.concat([df['date'],df['data'].apply(pd.Series)], axis=1)
print(df)

            date    open   close    high     low    volume
AAPL  2018-01-02  170.16  172.26  172.30  169.26  25555934
MSFT  2018-01-02   86.13   85.95   86.31   85.50  22483797

这是非常重要的unefficient@W-B、 让我来说说你的想法,与你提出的方法有什么不同?缺点是什么?@EricArambula speed,apply是计时成本函数,因为你有库存数据,当规模增加时,你会发现apply+pd.Serise慢,这些数据来自何处参考:df['data']?