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

如何将层级字典转换为Pandas DataFrame(电池层级数据场景)

将层级字典转换为Pandas DataFrame的方法

需求背景

需要将对应以下层级关系的嵌套字典转换为Pandas DataFrame,每一行对应一个电芯,包含其所属的城市、车辆、Pack、模块及电芯ID:

delhi = 10 vehicle
1 vehicle = 1 battery
1 battery = 4 packs
a pack = 2 modules 
1 module = 104 cells

示例与完整字典结构

示例字典

tempdict = {
    'vehicle1':[
        {'pack1':[{'module1':pack104}, {'module2':pack104}]}, 
        {'pack2':[{'module1':pack104}, {'module2':pack104}]}, 
        {'pack3':[{'module1':pack104}, {'module2':pack104}]}, 
        {'pack4':[{'module1':pack104}, {'module2':pack104}]}
    ]
}

完整字典

import itertools

listone = ['pack' ]
listtwo = ["{0}".format(i) for i in range(1,105)]
pack104 = list(''.join(e) for e in itertools.product(listone, listtwo))
data_dict = {'delhi': [{'vehicle1':[{'pack1':[{'module1':pack104}, {'module2':pack104}]}, {'pack2':[{'module1':pack104}, {'module2':pack104}]}, {'pack3':[{'module1':pack104}, {'module2':pack104}]}, {'pack4':[{'module1':pack104}, {'module2':pack104}]}]},
 {'vehicle2':[{'pack1':[{'module1':pack104}, {'module2':pack104}]}, {'pack2':[{'module1':pack104}, {'module2':pack104}]}, {'pack3':[{'module1':pack104}, {'module2':pack104}]}, {'pack4':[{'module1':pack104}, {'module2':pack104}]}]},
 {'vehicle3':[{'pack1':[{'module1':pack104}, {'module2':pack104}]},{ 'pack2':[{'module1':pack104}, {'module2':pack104}]}, {'pack3':[{'module1':pack104}, {'module2':pack104}]}, {'pack4':[{'module1':pack104}, {'module2':pack104}]}]},
 {'vehicle4':[{'pack1':[{'module1':pack104}, {'module2':pack104}]}, {'pack2':[{'module1':pack104}, {'module2':pack104}]}, {'pack3':[{'module1':pack104}, {'module2':pack104}]}, {'pack4':[{'module1':pack104}, {'module2':pack104}]}]},
 {'vehicle5':[{'pack1':[{'module1':pack104}, {'module2':pack104}]}, {'pack2':[{'module1':pack104}, {'module2':pack104}]}, {'pack3':[{'module1':pack104}, {'module2':pack104}]}, {'pack4':[{'module1':pack104}, {'module2':pack104}]}]},
 {'vehicle6':[{'pack1':[{'module1':pack104}, {'module2':pack104}]}, {'pack2':[{'module1':pack104}, {'module2':pack104}]}, {'pack3':[{'module1':pack104}, {'module2':pack104}]}, {'pack4':[{'module1':pack104}, {'module2':pack104}]}]},
 {'vehicle7':[{'pack1':[{'module1':pack104}, {'module2':pack104}]}, {'pack2':[{'module1':pack104}, {'module2':pack104}]}, {'pack3':[{'module1':pack104}, {'module2':pack104}]}, {'pack4':[{'module1':pack104}, {'module2':pack104}]}]},
 {'vehicle8':[{'pack1':[{'module1':pack104}, {'module2':pack104}]}, {'pack2':[{'module1':pack104}, {'module2':pack104}]}, {'pack3':[{'module1':pack104}, {'module2':pack104}]}, {'pack4':[{'module1':pack104}, {'module2':pack104}]}]},
 {'vehicle9':[{'pack1':[{'module1':pack104}, {'module2':pack104}]}, {'pack2':[{'module1':pack104}, {'module2':pack104}]}, {'pack3':[{'module1':pack104}, {'module2':pack104}]}, {'pack4':[{'module1':pack104}, {'module2':pack104}]}]},
 {'vehicle10':[{'pack1':[{'module1':pack104}, {'module2':pack104}]}, {'pack2':[{'module1':pack104}, {'module2':pack104}]}, {'pack3':[{'module1':pack104}, {'module2':pack104}]}, {'pack4':[{'module1':pack104}, {'module2':pack104}]}]}]}

转换方法

通过多层循环遍历嵌套字典的每一层,收集每个电芯的完整层级信息,再转换为DataFrame:

import pandas as pd

# 初始化空列表存储每条电芯记录
records = []

# 遍历层级结构
for city, vehicles in data_dict.items():
    for vehicle_item in vehicles:
        for vehicle_name, packs in vehicle_item.items():
            for pack_item in packs:
                for pack_name, modules in pack_item.items():
                    for module_item in modules:
                        for module_name, cells in module_item.items():
                            for cell_id in cells:
                                records.append({
                                    '城市': city,
                                    '车辆': vehicle_name,
                                    'Pack': pack_name,
                                    '模块': module_name,
                                    '电芯ID': cell_id
                                })

# 转换为DataFrame
df = pd.DataFrame(records)

# 验证结果(可选)
print(df.head())

说明

  • 这段代码逐层遍历嵌套字典,将每个电芯的所属城市、车辆、Pack、模块及自身ID存入字典,再统一存入列表records
  • 最终用pd.DataFrame()将列表转换为结构化的DataFrame,每一行对应一个电芯的完整归属信息

内容的提问来源于stack exchange,提问作者Sachin Shinde

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 15:17:38