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

如何将嵌套结构的JSON字典转换为Pandas DataFrame

解决嵌套数据转Pandas DataFrame的问题

我明白你遇到的问题了——这种嵌套的字典结构确实容易在遍历的时候踩坑,咱们一步步来拆解解决它。

首先,先明确你的数据结构:raw_data['rows']['data'] 是一个列表,其中每个元素又是一个字典列表,每个字典包含column_name(列标题)和row_value(对应列的数据)。比如完整的数据大概是这样:

raw_data = {
    'rows': {
        'data': [
            [{'column_name': 'name', 'row_value': 'Alice'}, {'column_name': 'age', 'row_value': 25}],
            [{'column_name': 'name', 'row_value': 'Bob'}, {'column_name': 'age', 'row_value': 30}]
        ]
    }
}

你的原代码问题所在

你之前的代码:

df = pd.DataFrame(data=[data_rows['row_value'] for data_rows in raw_data['rows']['data']], columns=['column_name'])

有两个核心问题:

  1. raw_data['rows']['data'] 的每个元素是一个列表(比如上面例子中的[{'name': 'Alice'}, {'age':25}]),不是单个字典,所以data_rows['row_value']会直接报错——列表没有row_value这个键。
  2. 你手动指定了columns=['column_name'],但实际列标题应该从每个字典的column_name字段动态提取,而不是固定值。

正确的实现方案

我们需要先把每一行的字典列表转换成一个完整的行字典(键为列名,值为对应数据),再把所有行字典传给pd.DataFrame()。具体代码如下:

import pandas as pd

# 假设你的原始数据是raw_data
processed_rows = []
# 遍历每一行的嵌套字典列表
for row_items in raw_data['rows']['data']:
    # 将当前行的所有字典转换为一个键值对字典
    row_dict = {item['column_name']: item['row_value'] for item in row_items}
    processed_rows.append(row_dict)

# 生成DataFrame
df = pd.DataFrame(processed_rows)

用上面的示例数据运行后,得到的DataFrame会是:

nameage
Alice25
Bob30

简化写法(一行式)

如果你喜欢更简洁的代码,可以用列表推导式直接生成所有行字典:

df = pd.DataFrame([{item['column_name']: item['row_value'] for item in row} for row in raw_data['rows']['data']])

这样就能完美把嵌套结构转换成你需要的DataFrame了。

内容的提问来源于stack exchange,提问作者Jack Gruber

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 18:42:51