嵌套字典结构JSON文件转换为指定格式Pandas DataFrame问题求解
问题原因
pd.json_normalize的record_path参数要求指向的JSON节点为列表类型,当前JSON中quiz节点为字典结构,不符合参数要求,因此抛出类型错误。- 仅指定
max_level=2时,方法只会将所有嵌套字段拍平为带层级前缀的列,输出单行结果,无法拆分出多个题目行,不符合预期。
解决代码
import json import pandas as pd # 读取JSON文件 with open("json2.json", "r", encoding="utf-8") as f: data = json.load(f) rows = [] # 提取所有行共用的公共字段 common_fields = {k: v for k, v in data.items() if k != "quiz"} # 遍历quiz下的学科分类 for subject, question_map in data["quiz"].items(): # 遍历每个学科下的所有题目 for q_id, q_content in question_map.items(): row = { "quiz": subject, q_id: q_id, **q_content, **common_fields } rows.append(row) # 生成DataFrame并调整列顺序为预期格式 df = pd.DataFrame(rows)[["quiz", "q1", "q2", "question", "options", "answer", "test_dict", "summary", "viewer rating"]]
结果说明
生成的DataFrame会自动将不存在的q1/q2列填充为NaN,列表、字典类型的字段(options、test_dict)会保留原类型存储,公共字段summary和viewer rating会在所有行复用,完全符合你给出的目标结构。
内容的提问来源于stack exchange,提问作者r21
相关产品推荐
相关产品推荐

