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

如何提取嵌套字典值生成新字典并转换为Pandas DataFrame?

从嵌套字典提取值并转换为指定格式的Pandas DataFrame

需求说明

当前数据

Some_dict = {0: {},
             1: {'A': ['apple']},
             2: {},
             3: {'B': ['orange', 'papaya']},
             4: {'C': ['mango', 'berries', 'grape']}}

期望生成的DataFrame格式

namefruits
{}
Aapple
{}
Borange
Bpapaya
Cmango
Cberries
Cgrape

实现代码

不需要先构造你提到的my_dict(该格式不符合Python字典语法规范),可以直接遍历原字典生成目标数据,再转成DataFrame:

import pandas as pd

Some_dict = {0: {},
             1: {'A': ['apple']},
             2: {},
             3: {'B': ['orange', 'papaya']},
             4: {'C': ['mango', 'berries', 'grape']}}

# 创建空列表存储每行数据
data_rows = []

# 遍历原字典的每个值
for item in Some_dict.values():
    if not item:
        # 处理空字典,添加对应行
        data_rows.append({'name': '{}', 'fruits': ''})
    else:
        # 获取字典的键和对应的水果列表
        category = next(iter(item.keys()))
        fruits_list = item[category]
        # 每个水果单独生成一行
        for fruit in fruits_list:
            data_rows.append({'name': category, 'fruits': fruit})

# 转换为DataFrame
result_df = pd.DataFrame(data_rows)
print(result_df)

代码说明

  • 先创建空列表data_rows,用来存放要生成的表格每行数据
  • 遍历原字典的每个元素:
    • 如果是空字典,直接添加一行{'name': '{}', 'fruits': ''},对应表格里的空行
    • 如果是非空字典,先取出里面的唯一分类键(比如'A'、'B'),再遍历该分类下的所有水果,每个水果单独生成一行数据,确保每个水果都占一行
  • 最后用pd.DataFrame()把列表转换成目标格式的DataFrame

运行结果

执行代码后得到的DataFrame与期望格式完全一致:

name   fruits
0   {}         
1    A    apple
2   {}         
3    B   orange
4    B   papaya
5    C    mango
6    C  berries
7    C     grape

内容的提问来源于stack exchange,提问作者oazed lium

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 02:24:29