You need to enable JavaScript to run this app. 如何将Pandas dataframe转换为以指定列为键、属性为值列表的dict
优惠活动
大模型
产品
解决方案
定价
更多

如何将Pandas dataframe转换为以指定列为键、属性为值列表的dict

Pandas DataFrame 转指定键值结构的实现方法

目标转换规则:将Name列的值作为字典的键,同一行的age、job列值按顺序组成列表作为对应键的值,最终输出结构为{'John': [25, 'Scientist']}。

方法1:使用Pandas内置to_dict接口

操作逻辑:把Name列设为行索引,筛选出需要作为值的两列后转置,通过to_dict('list')直接生成目标结构

import pandas as pd

# 示例原始DataFrame
df = pd.DataFrame({
    'Name': ['John'],
    'age': [25],
    'job': ['Scientist']
})

result = df.set_index('Name')[['age', 'job']].T.to_dict('list')
# 运行结果:{'John': [25, 'Scientist']}

特点:代码简洁,是Pandas官方推荐的常规转换方式,处理十万行以上的大批量数据时稳定性好。

方法2:逐行遍历手动组装字典

逻辑直白,没有复杂的接口参数记忆成本,适合快速理解转换过程

result = {}
for _, row in df.iterrows():
    current_name = row['Name']
    result[current_name] = [row['age'], row['job']]

注意:该方法逐行触发Python层级的循环,当DataFrame行数过万时运行速度会明显下降,仅适合小数据量的临时调试场景。

方法3:基于zip的向量化打包

无逐行Python循环开销,是三种方法中运行效率最高的,尤其适配超大尺寸DataFrame

name_keys = df['Name'].tolist()
value_lists = map(list, zip(df['age'].tolist(), df['job'].tolist()))
result = dict(zip(name_keys, value_lists))

原理:先把Name列的所有值整理为字典的键序列,再把同行的age、job值按位置打包为列表组成值序列,最后直接调用dict构造函数生成目标字典。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.23 21:36:08