0

0

将嵌套字典(三层)转换为带多级列索引的Pandas表格

霞舞

霞舞

发布时间:2026-01-25 20:57:08

|

546人浏览过

|

来源于php中文网

原创

将嵌套字典(三层)转换为带多级列索引的Pandas表格

本文介绍如何将形如 `{block: {text: {key: value}}}` 的三层嵌套字典高效转换为具有多级列索引(multiindex columns)的pandas dataframe,实现结构化表格展示,适用于配置解析、实验结果汇总等场景。

要将深度为三层的嵌套字典(block → text → key)转化为直观、可读性强的表格形式(如 block 为行索引,text 为一级列名,key 为二级列名),核心在于重塑数据结构以匹配 MultiIndex 列布局。直接使用 pd.DataFrame(data) 会因内层字典不统一而生成 object 类型列,无法满足分层展示需求。

推荐采用“转置 + 展平 + 拼接 + 列索引重建”的四步策略:

  1. 转置原始 DataFrame:df.T 将 block 从键变为行索引,使各 text(如 "text1"、"text2")成为列名,便于后续按列处理;
  2. 逐列展平内层字典:对每一列(即每个 text),使用 pd.json_normalize() 将其对应的字典(如 {"key1": "value1", "key2": "value2"})展开为独立列;
  3. 水平拼接展平结果:用 pd.concat(..., axis=1) 将各 text 对应的扁平 DataFrame 横向合并;
  4. 构建多级列索引:通过 pd.MultiIndex.from_product() 显式定义列层级——第一级为 text 名(原列名),第二级为 key 名(如 "key1", "key2"),确保语义清晰且支持 .xs() 等高级索引操作。

完整代码如下:

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)

输出效果:

知我AI
知我AI

一款多端AI知识助理,通过一键生成播客/视频/文档/网页文章摘要、思维导图,提高个人知识获取效率;自动存储知识,通过与知识库聊天,提高知识利用效率。

下载
text   text1           text2        
key     key1    key2    key1    key2
block1 value1  value2  value3  value4
block2 value5  value6  value7  value8

注意事项

  • json_normalize() 要求各 text 下的子字典具有完全一致的键集合;若存在缺失键(如某 text2 缺少 "key2"),需预先填充默认值(如用 pd.json_normalize(df[col], errors='ignore') 或手动补全);
  • 列名层级可通过 names=["text", "key"] 显式命名,提升可读性与后续分组操作便利性;
  • 若原始嵌套更深(如四层),可递归展平或改用 pd.json_normalize(data, sep='_') 配合正则重命名列。

该方法兼顾简洁性与可扩展性,是处理规则化嵌套配置数据的标准实践。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
Python 时间序列分析与预测
Python 时间序列分析与预测

本专题专注讲解 Python 在时间序列数据处理与预测建模中的实战技巧,涵盖时间索引处理、周期性与趋势分解、平稳性检测、ARIMA/SARIMA 模型构建、预测误差评估,以及基于实际业务场景的时间序列项目实操,帮助学习者掌握从数据预处理到模型预测的完整时序分析能力。

82

2025.12.04

Python 数据清洗与预处理实战
Python 数据清洗与预处理实战

本专题系统讲解 Python 在数据清洗与预处理中的核心技术,包括使用 Pandas 进行缺失值处理、异常值检测、数据格式化、特征工程与数据转换,结合 NumPy 高效处理大规模数据。通过实战案例,帮助学习者掌握 如何处理混乱、不完整数据,为后续数据分析与机器学习模型训练打下坚实基础。

34

2026.01.31

treenode的用法
treenode的用法

​在计算机编程领域,TreeNode是一种常见的数据结构,通常用于构建树形结构。在不同的编程语言中,TreeNode可能有不同的实现方式和用法,通常用于表示树的节点信息。更多关于treenode相关问题详情请看本专题下面的文章。php中文网欢迎大家前来学习。

550

2023.12.01

C++ 高效算法与数据结构
C++ 高效算法与数据结构

本专题讲解 C++ 中常用算法与数据结构的实现与优化,涵盖排序算法(快速排序、归并排序)、查找算法、图算法、动态规划、贪心算法等,并结合实际案例分析如何选择最优算法来提高程序效率。通过深入理解数据结构(链表、树、堆、哈希表等),帮助开发者提升 在复杂应用中的算法设计与性能优化能力。

30

2025.12.22

深入理解算法:高效算法与数据结构专题
深入理解算法:高效算法与数据结构专题

本专题专注于算法与数据结构的核心概念,适合想深入理解并提升编程能力的开发者。专题内容包括常见数据结构的实现与应用,如数组、链表、栈、队列、哈希表、树、图等;以及高效的排序算法、搜索算法、动态规划等经典算法。通过详细的讲解与复杂度分析,帮助开发者不仅能熟练运用这些基础知识,还能在实际编程中优化性能,提高代码的执行效率。本专题适合准备面试的开发者,也适合希望提高算法思维的编程爱好者。

45

2026.01.06

chatgpt官网入口地址合集
chatgpt官网入口地址合集

本专题整合了chatgpt官网入口地址、使用教程等内容,阅读专题下面的文章了解更多详细内容。

0

2026.03.16

minimax入口地址汇总
minimax入口地址汇总

本专题整合了minimax相关入口合集,阅读专题下面的文章了解更多详细地址。

4

2026.03.16

C++多线程并发控制与线程安全设计实践
C++多线程并发控制与线程安全设计实践

本专题围绕 C++ 在高性能系统开发中的并发控制技术展开,系统讲解多线程编程模型与线程安全设计方法。内容包括互斥锁、读写锁、条件变量、原子操作以及线程池实现机制,同时结合实际案例分析并发竞争、死锁避免与性能优化策略。通过实践讲解,帮助开发者掌握构建稳定高效并发系统的关键技术。

7

2026.03.16

TypeScript类型系统进阶与大型前端项目实践
TypeScript类型系统进阶与大型前端项目实践

本专题围绕 TypeScript 在大型前端项目中的应用展开,深入讲解类型系统设计与工程化开发方法。内容包括泛型与高级类型、类型推断机制、声明文件编写、模块化结构设计以及代码规范管理。通过真实项目案例分析,帮助开发者构建类型安全、结构清晰、易维护的前端工程体系,提高团队协作效率与代码质量。

114

2026.03.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
WEB前端教程【HTML5+CSS3+JS】
WEB前端教程【HTML5+CSS3+JS】

共101课时 | 10.3万人学习

JS进阶与BootStrap学习
JS进阶与BootStrap学习

共39课时 | 3.4万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号