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

如何遍历含字典的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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 12:45:36