如何在Python中将嵌套JSON API响应转换为指定格式的DataFrame
嵌套JSON转DataFrame的格式转换方案
你遇到的问题是API返回的嵌套JSON直接转成DataFrame后结构不符合需求,以下是两种简单的解决方法:
方法一:直接生成目标格式的DataFrame
使用pandas.DataFrame.from_dict()方法时,指定orient='index'参数,会自动将字典的键(标的代码)作为DataFrame的索引,子字典的键作为列名:
import pandas as pd # API返回的JSON数据(注意JSON规范要求双引号,若API返回单引号可先替换) data = { 'NFO:AXISBANK23JUNFUT': {'instrument_token': 9156098, 'last_price': 967.55}, 'NFO:BAJAJ-AUTO23JUNFUT': {'instrument_token': 9156354, 'last_price': 4619.15}, 'NFO:BAJAJFINSV23JUNFUT': {'instrument_token': 9179138, 'last_price': 1544.1}, 'NFO:BAJFINANCE23JUNFUT': {'instrument_token': 9179394, 'last_price': 7390.85}, 'NFO:BALRAMCHIN23JUNFUT': {'instrument_token': 9180930, 'last_price': 395.95} } # 生成目标结构的DataFrame df = pd.DataFrame.from_dict(data, orient='index') print(df)
执行后输出的结构就是:
instrument_token last_price NFO:AXISBANK23JUNFUT 9156098 967.55 NFO:BAJAJ-AUTO23JUNFUT 9156354 4619.15 NFO:BAJAJFINSV23JUNFUT 9179138 1544.10 NFO:BAJFINANCE23JUNFUT 9179394 7390.85 NFO:BALRAMCHIN23JUNFUT 9180930 395.95
方法二:对已生成的DataFrame转置
如果已经得到了字段为行、标的为列的原始DataFrame,直接使用.T属性转置即可交换行和列:
# 假设已生成原始格式的DataFrame df_original = pd.DataFrame(data) # 转置得到目标结构 df = df_original.T print(df)
转置后的结果和方法一完全一致。
内容的提问来源于stack exchange,提问作者Sachin Gupta
相关产品推荐
相关产品推荐

