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

如何将嵌套字典导出为DataFrame并展开最深层数据至Excel

嵌套字典展开为多列DataFrame的实现方案

需求说明

需要将包含角色基础信息与嵌套物品详情的字典列表,展开为每个物品条目对应独立列的DataFrame(无物品信息则留空),最终用于导出至Excel,适配RPG存档物品追踪程序的界面需求。

示例输入数据

data = [{
    'id': 1,
    'name': 'A',
    'class': '1',
    'item_details': [
        {'level': 1, 'item': 'item A', 'quantity': 5},
        {'level': 3, 'item': 'item A', 'quantity': 5},
        {'level': 3, 'item': 'item C', 'quantity': 5}
    ]
},
{
    'id': 2,
    'name': 'B',
    'class': '2',
    'item_details': [
        {'level': 1, 'item': 'item B', 'quantity': 2},
        {'level': 2, 'item': 'item D', 'quantity': 10}
    ]
},
{
    'id': 3,
    'name': 'B',
    'class': '3'
}]

实现代码

import pandas as pd

flattened_data = []

for entry in data:
    # 提取角色基础信息(排除物品详情字段)
    base_info = {key: value for key, value in entry.items() if key != 'item_details'}
    # 获取物品详情列表,无则设为空列表
    item_list = entry.get('item_details', [])
    
    # 遍历每个物品条目,按顺序生成带索引后缀的列
    for index, item in enumerate(item_list, start=1):
        base_info[f'level_{index}'] = item['level']
        base_info[f'item_{index}'] = item['item']
        base_info[f'quantity_{index}'] = item['quantity']
    
    flattened_data.append(base_info)

# 转换为DataFrame并填充空值为空字符串
result_df = pd.DataFrame(flattened_data).fillna('')
print(result_df)

输出结果

idnameclasslevel_1item_1quantity_1level_2item_2quantity_2level_3item_3quantity_3
1A11item A53item A53item C5
2B21item B22item D10
3B3

代码说明

  1. 基础信息提取:从每个字典中分离出id、name、class等非嵌套字段,作为每行的基础数据。
  2. 物品条目展开:遍历每个角色的物品详情,按条目顺序生成带数字后缀的列名(如level_1、item_2),将每个物品的属性值对应填入。
  3. 空值处理:转换为DataFrame后,用空字符串填充缺失的物品字段,符合Excel导出的格式要求。

内容的提问来源于stack exchange,提问作者John Reyner

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 04:09:21