如何将DataFrame转换为以ID列为键、其余列为嵌套字典的字典
Pandas DataFrame按ID列转换为行级嵌套字典实现方法
问题背景
现有结构如下的DataFrame:
| ID | A | B |
|---|---|---|
| 123 | a | b |
| 456 | c | d |
需要转换为指定格式的字典:以ID列取值作为外层字典键,外层键对应的值为嵌套字典,嵌套字典的键为其余列的列名,值为对应行的列取值,目标结构示例:
{123: {'A': 'a', 'B': 'b'}, 456: {'A': 'c', 'B': 'd'}}
直接使用mydataframe.set_index("ID").to_dict()得到的结果不符合预期,核心原因是没有指定to_dict()的转换方向参数。
正确实现代码
只需要给to_dict()传入参数orient='index'即可,完整示例:
import pandas as pd # 构造示例DataFrame df = pd.DataFrame({ 'ID': [123, 456], 'A': ['a', 'c'], 'B': ['b', 'd'] }) # 执行转换 target_dict = df.set_index("ID").to_dict(orient='index')
运行后target_dict的输出和目标结构完全一致。
原因说明
to_dict()方法默认的orient参数值为'dict',该模式下会以原列名作为外层字典的键,行索引作为内层字典的键,得到的结构是{'A': {123: 'a', 456: 'c'}, 'B': {123: 'b', 456: 'd'}},和需求结构层级相反。- 传入
orient='index'时,方法会以行索引值作为外层字典的键,每一行的列名、列取值组成内层字典,正好匹配需求的结构。
内容的提问来源于stack exchange,提问作者Parth Shah
相关产品推荐
相关产品推荐

