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

如何将嵌套字典转换为指定结构的pandas多层索引DataFrame?

实现方法:无需调整字典结构,直接转换为目标DataFrame

当然可行!完全不用修改你原有的嵌套字典结构,用Python的Pandas库就能轻松转换成你想要的格式,这里给你两种实用的方案:

方案一:手动展开(直观易懂,适合新手)

这种方法通过三层循环把嵌套字典里的每一组键值对提取出来,整理成列表后再创建DataFrame:

import pandas as pd

# 你的原始嵌套字典
original_dict = {'Main1' : {'A1' : {'a1' : 0}, 'A2' : {'a2' : 15}, 'A3' : {'a3' : 22}, 'A4' : {'a4' : 130}}, 'Main2' : {'B1' : {'b1' : 150}, 'B2' : {'b2' : 30}, 'B3' : {'b3' : 1}}}

# 初始化空列表用来存储扁平数据
flat_data = []
# 逐层遍历嵌套字典
for main_key, mid_level_dict in original_dict.items():
    for mid_key, inner_level_dict in mid_level_dict.items():
        for inner_key, value in inner_level_dict.items():
            # 把每一组数据以列表形式加入flat_data
            flat_data.append([main_key, mid_key, inner_key, value])

# 创建DataFrame并指定列名
result_df = pd.DataFrame(flat_data, columns=['col1', 'col2', 'col3', 'col4'])
print(result_df)

运行后就能得到你想要的表格格式,输出结果和你给出的示例完全一致。

方案二:用Pandas内置方法(简洁高效)

如果你想少写循环,可以利用Pandas的json_normalize和stack方法来自动展开多层嵌套:

import pandas as pd

original_dict = {'Main1' : {'A1' : {'a1' : 0}, 'A2' : {'a2' : 15}, 'A3' : {'a3' : 22}, 'A4' : {'a4' : 130}}, 'Main2' : {'B1' : {'b1' : 150}, 'B2' : {'b2' : 30}, 'B3' : {'b3' : 1}}}

# 先将嵌套字典转为多层索引的Series
multi_level_series = pd.Series(pd.io.json.json_normalize(original_dict).stack().stack())
# 重置索引并设置列名
result_df = multi_level_series.reset_index()
result_df.columns = ['col1', 'col2', 'col3', 'col4']
print(result_df)

这个方案本质是利用Pandas的多层索引特性自动展开嵌套结构,代码更简洁,处理大型字典时效率也更高。

两种方案都不需要修改你原有的字典结构,直接运行就能得到目标DataFrame~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:52:19