You need to enable JavaScript to run this app. pandas DataFrame两列转字典时重名键存储多个值为列表的实现方法
优惠活动
大模型
产品
解决方案
定价
更多

pandas DataFrame两列转字典时重名键存储多个值为列表的实现方法

实现方案

方案1:统一返回列表(推荐)

所有姓名对应的取值都为ID列表,后续处理无需额外判断字段类型,代码最简洁:

name_id_map = df.groupby('fullName')['playerID'].apply(list).to_dict()

该实现直接按fullName分组聚合,自动处理重名逻辑,无需手动编写条件判断和遍历追加逻辑。

方案2:单ID返回字符串、多ID返回列表

如果要求唯一姓名对应的取值为单个ID字符串,仅重名姓名返回ID列表,可对分组结果增加长度判断:

name_id_map = df.groupby('fullName')['playerID'].apply(
    lambda x: x.iloc[0] if len(x) == 1 else x.tolist()
).to_dict()

效果验证

用以下测试数据运行:

import pandas as pd
df = pd.DataFrame({
    'fullName': ['John Williams', 'John Williams', 'Li Ming'],
    'playerID': ['williamsjo01', 'williamsjo02', 'mingli01']
})

方案1输出结果:

{'John Williams': ['williamsjo01', 'williamsjo02'], 'Li Ming': ['mingli01']}

方案2输出结果:

{'John Williams': ['williamsjo01', 'williamsjo02'], 'Li Ming': 'mingli01'}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 15:42:02