如何提取嵌套字典值生成新字典并转换为Pandas DataFrame?
从嵌套字典提取值并转换为指定格式的Pandas DataFrame
需求说明
当前数据
Some_dict = {0: {}, 1: {'A': ['apple']}, 2: {}, 3: {'B': ['orange', 'papaya']}, 4: {'C': ['mango', 'berries', 'grape']}}
期望生成的DataFrame格式
| name | fruits |
|---|---|
| {} | |
| A | apple |
| {} | |
| B | orange |
| B | papaya |
| C | mango |
| C | berries |
| C | grape |
实现代码
不需要先构造你提到的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
相关产品推荐
相关产品推荐

