电话
400 9058 355
本文介绍如何将形如 `{block: {text: {key: value}}}` 的三层嵌套字典高效转换为具有多级列索引(multiindex columns)的pandas dataframe,实现结构化表格展示,适用于配置解析、实验结果汇总等场景。
要将深度为三层的嵌套字典(block → text → key)转化为直观、可读性强的表格形式(如 block 为行索引,text 为一级列名,key 为二级列名),核心在于重塑数据结构以匹配 MultiIndex 列布局。直接使用 pd.DataFrame(data) 会因内层字典不统一而生成 object 类型列,无法满足分层展示需求。
推荐采用“转置 + 展平 + 拼接 + 列索引重建”的四步策略:

完整代码如下:
import pandas as pd
data = {
"block1": {
"text1": {"key1": "value1", "key2": "value2"},
"text2": {"key1": "value3", "key2": "value4"},
},
"block2": {
"text1": {"key1": "value5", "key2": "value6"},
"text2": {"key1": "value7", "key2": "value8"},
},
}
# 步骤1:构建初始DataFrame并转置
df = pd.DataFrame(data).T
# 步骤2+3:对每列展平并水平拼接
flattened_cols = [pd.json_normalize(df[col]) for col in df.columns]
new_df = pd.concat(flattened_cols, axis=1).set_index(df.index)
# 步骤4:设置多级列索引(text → key)
keys = ["key1", "key2"] # 假设所有text下key结构一致;若不一致,建议先校验
new_df.columns = pd.MultiIndex.from_product([df.columns, keys], names=["text", "key"])
print(new_df)输出效果:
text text1 text2 key key1 key2 key1 key2 block1 value1 value2 value3 value4 block2 value5 value6 value7 value8
✅ 注意事项:
该方法兼顾简洁性与可扩展性,是处理规则化嵌套配置数据的标准实践。
邮箱:8955556@qq.com
Q Q:8955556
本文详解如何将Go官方present工具(用于生成HTML5...
PySNMP在不同版本中对SNMP错误状态(errorSta...
time.Sleep仅阻塞当前goroutine,其他gor...
PHPfopen()创建含特殊符号的文件名失败主因是操作系统...
WooCommerce中通过代码为分组产品动态聚合子商品的属...
io.ReadFull返回io.ErrUnexpectedE...
本文详解Yii2中控制器向视图传递ActiveRecord数...
本文详解为何通过wp_set_object_terms()为...
Pytest中使用@mock.patch类装饰器会导致补丁泄...
带缓冲的channel是并发安全的FIFO队列;make(c...