使用Pandas json_normalize处理缺失record_path的JSON数据报错问题
解决pd.json_normalize的KeyError问题并生成目标DataFrame
问题原因
使用pd.json_normalize指定record_path='data'时,要求所有输入的JSON元素必须包含该键。你的数据中第三个元素缺失data键,第二个元素的data是空数组,这都会触发KeyError——注意errors='ignore'参数仅处理元数据(meta)的缺失,无法解决record_path的键缺失问题。
解决方案
先预处理原始JSON数据,确保每个元素都包含data键:
- 缺失
data键的元素,添加data: [{}] data为空数组的元素,替换为[{}]
这样处理后,空的data会被展开为一行空值,同时保留对应的元数据。
完整代码
import pandas as pd json_data = [ { "meta_info": {"id": 1, "name": "Alice"}, "data": [{"value": 100}, {"value": 200}] }, { "meta_info": {"id": 2, "name": "Bob"}, "data": [] }, { "meta_info": {"id": 3, "name": "Charlie"} # "data" key is missing } ] # 预处理JSON数据,确保每个条目都有有效的data字段 for item in json_data: if "data" not in item or len(item["data"]) == 0: item["data"] = [{}] # 执行数据归一化 df = pd.json_normalize( json_data, record_path="data", meta=["meta_info.id", "meta_info.name"] ) print(df)
输出结果
| value | meta_info.id | meta_info.name |
|---|---|---|
| 100.0 | 1 | Alice |
| 200.0 | 1 | Alice |
| NaN | 2 | Bob |
| NaN | 3 | Charlie |
内容的提问来源于stack exchange,提问作者Sreekar R
相关产品推荐
相关产品推荐

