如何遍历含字典的JSON列表并提取数据生成Pandas DataFrame
问题:将嵌套JSON列表转换为指定结构的Pandas DataFrame
原始数据
lista = [{'document': {'amount': 20, 'name': 'Peter', 'city': 'Madrid'}, 'highlights': [], 'text_match': 100}, {'document': {'amount': 15, 'name': 'Angel', 'city': 'Barcelona'}, 'highlights': [], 'text_match': 100}, {'document': {'amount': 10, 'name': 'Louis', 'city': 'London'}, 'highlights': [], 'text_match': 100}]
预期输出DataFrame结构
amount name city 0 20 Peter Madrid 1 15 Angel Barcelona 2 10 Louis London
尝试的代码及问题
尝试了如下代码:
res = [] for p in lista: res.append(p) df = pd.DataFrame(res)
得到的结果不符合预期,生成的DataFrame包含document、highlights和text_match三列:
document highlights text_match 0 {'amount': 20, 'name': 'Peter', 'city': 'Madrid'} [] 100 1 {'amount': 15, 'name': 'Angel', 'city': 'Barce... [] 100 2 {'amount': 10, 'name': 'Louis', 'city': 'London'} [] 100
解决方法
方法1:遍历提取document字段(直观易读)
直接遍历列表中的每个字典,取出其中的document子字典存入结果列表:
res = [] for p in lista: res.append(p['document']) # 只提取document内的嵌套字典 df = pd.DataFrame(res)
方法2:列表推导式简化代码
用列表推导式替代循环,代码更简洁:
df = pd.DataFrame([item['document'] for item in lista])
方法3:使用pd.json_normalize(适配复杂嵌套场景)
如果后续需要处理更复杂的嵌套JSON结构,json_normalize是通用解决方案:
import pandas as pd df = pd.json_normalize(lista, record_path='document')
以上三种方法均可生成你需要的DataFrame结构。
内容的提问来源于stack exchange,提问作者nokvk
相关产品推荐
相关产品推荐

