如何解决嵌套JSON转DataFrame仅转换第一层级问题并导出至Excel
解决嵌套JSON转展开列DataFrame并导出Excel的问题
针对你提供的季度资产负债表嵌套JSON数据,无法展开深层字段的问题,以下是正确的处理方案:
正确代码实现
import pandas as pd import json pd.set_option('display.max_columns', None) # 读取JSON文件(用with语句自动关闭文件更规范) with open('file.json', 'r') as f: data = json.load(f) # 核心:指定record_path为嵌套数组,自动展开所有层级字段 df = pd.json_normalize(data['balanceSheetHistoryQuarterly']['balanceSheetStatements']) # 可选:重命名列名,让表头更易读 df.rename(columns={ 'intangibleAssets.raw': '无形资产_原始值', 'intangibleAssets.fmt': '无形资产_简化格式', 'intangibleAssets.longFmt': '无形资产_完整格式', 'capitalSurplus.raw': '资本公积_原始值', 'capitalSurplus.fmt': '资本公积_简化格式', 'capitalSurplus.longFmt': '资本公积_完整格式' }, inplace=True) # 导出到Excel,去除索引列 df.to_excel("output\\DATAFILE2.xlsx", index=False) # 打印查看结果 print(df)
代码说明
- 之前的错误在于未正确指定
record_path:你需要把balanceSheetStatements这个嵌套数组作为目标路径,json_normalize会自动递归展开所有嵌套的键值对,生成如intangibleAssets.raw格式的列名。 meta参数是用来提取数组外部的额外字段(比如你的maxAge),如果需要可以在json_normalize中添加meta=['maxAge'],但你的需求里不需要这个字段,所以可以忽略。- 重命名列名是可选操作,目的是让Excel表头更直观,不用带点分隔符。
内容的提问来源于stack exchange,提问作者Alia
相关产品推荐
相关产品推荐

