求助:使用Python及pandas json_normalize转换深度嵌套JSON为CSV失败
解决嵌套JSON转CSV的问题(针对details.kpis.results)
分步处理方案
1. 加载JSON数据
先将JSON数据加载到Python环境中,假设数据已读取到变量data内:
import json import pandas as pd # 读取本地JSON文件(或直接使用已加载的JSON数据) with open("your_data.json", "r") as f: data = json.load(f)
2. 拆解深层嵌套的kpis.results
针对details.kpis.results的多层嵌套结构,先单独提取该部分数据,再关联上层元信息:
# 提取嵌套的results列表 kpis_results = data["details"]["kpis"]["results"] # 提取需要保留的上层元数据(根据你的JSON实际字段调整) meta_data = { "top_id": data.get("id"), "top_name": data.get("name") # 按需添加其他上层字段 } # 为每个results条目添加上层元数据 for item in kpis_results: item.update(meta_data) # 转换为DataFrame df = pd.DataFrame(kpis_results)
3. 处理子层级嵌套字段
如果results内仍有深层嵌套的字典或列表,可通过json_normalize展开:
# 展开results内的字典型嵌套字段,用下划线分隔层级 df = pd.json_normalize(kpis_results, sep="_") # 若存在列表型嵌套字段(如sub_results),指定record_path展开并关联元数据 # df = pd.json_normalize(kpis_results, record_path="sub_results", meta=["top_id", "top_name"], sep="_")
4. 导出为CSV
最终将处理好的数据导出为CSV文件:
df.to_csv("output.csv", index=False, encoding="utf-8")
关键注意事项
- 先确认
details.kpis.results的结构:如果是字典类型,需先转为列表再处理。 - 元数据字段需根据你的JSON实际结构调整,确保子条目与上层标识信息关联。
- 多层嵌套列表需循环逐层展开,再合并数据,避免信息丢失。
内容的提问来源于stack exchange,提问作者Ray Raja
相关产品推荐
相关产品推荐

