You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Python pandas正确读取多层嵌套JSON文件

问题原因

pd.json_normalize的record_path参数要求传入从JSON根节点到目标数据层的完整层级路径,你之前直接传入最内层的OccuCode、OccuDesc,程序在根节点找不到对应键,就会抛出KeyError。
你当前的JSON结构链路为:根节点 → WTFY_Combined → 3层中间嵌套 → OccuMa → 目标字段OccuCode/OccuDesc,必须先把路径补全到OccuMa层,才能正确提取下属字段。

实现代码
import pandas as pd
import json

# 加载本地JSON文件
with open("你的JSON文件实际路径", "r", encoding="utf-8") as f:
    raw_data = json.load(f)

# 补全从根节点到OccuMa层的完整路径,替换下方列表里的中间层键名为你实际JSON里的对应键名
# 路径格式为 [顶层键, 第二层键, 第三层键, 第四层键, 'OccuMa']
occu_ma_full = pd.json_normalize(
    raw_data,
    record_path=["WTFY_Combined", "中间第二层键名", "中间第三层键名", "中间第四层键名", "OccuMa"]
)

# 拆分出两个独立DataFrame
df_occu_code = occu_ma_full[["OccuCode"]].copy()
df_occu_desc = occu_ma_full[["OccuDesc"]].copy()
路径核对方法

如果不确定中间三层的具体键名,不用硬猜,逐层打印键值即可快速定位:

# 查看顶层所有键
print("顶层键列表:", list(raw_data.keys()))
# 查看WTFY_Combined下的键,如果该层值是列表,就取第一个元素查键:raw_data["WTFY_Combined"][0].keys()
print("WTFY_Combined层键列表:", list(raw_data["WTFY_Combined"].keys()))
# 按照上面的逻辑逐层往下查,直到找到OccuMa所在位置,把路径按顺序填到record_path的列表里就行

小提示:如果某一层的取值是数组(列表类型),取列表第一个元素调用.keys()就能看到该层下的所有键名。

内容的提问来源于stack exchange,提问作者user3521180

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 09:54:28