You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从DataFrame生成以键映射元素列表为值的Python字典(含示例数据实操)

解决方案:从DataFrame列生成「键: 元素列表」格式的字典

Hey there! Let's break this down into two clear parts to solve your problem effectively.

一、通用场景:如何构建{键: 元素列表}的字典结构

这里有两种常用且实用的方法,你可以根据需求选择:

方法1:简洁高效的groupby + apply + to_dict组合

这是处理这类需求的首选方式,代码简洁且性能优秀:

# 替换成你的实际列名
result_dict = your_dataframe.groupby('键列名称')['目标值列名称'].apply(list).to_dict()

原理说明:

  • groupby('键列名称')会把DataFrame中键值相同的行归为一组
  • apply(list)将每组的目标值列打包成列表
  • to_dict()直接把分组结果转换成你需要的字典格式

方法2:手动循环构建(适合自定义逻辑)

如果你需要对每组数据做额外处理(比如去重、过滤无效值),手动循环会更灵活:

result_dict = {}
for key, group in your_dataframe.groupby('键列名称'):
    # 这里可以添加自定义处理逻辑,比如去重:group['目标值列名称'].unique().tolist()
    result_dict[key] = group['目标值列名称'].tolist()

二、针对你的Df1的具体实现

首先明确你的示例数据结构:

Df1包含Id和mail-id两列:

  • Id=1对应mail-id值:xyz@gm、ygzbb
  • Id=2对应mail-id值:Ghh、Hjkk

情况1:每行对应单个mail-id值

如果你的Df1是每行存储一个mail-id(即Id=1有两行数据),用下面的代码:

import pandas as pd

# 构造示例DataFrame
data = {
    'Id': [1, 1, 2, 2],
    'mail-id': ['xyz@gm', 'ygzbb', 'Ghh', 'Hjkk']
}
Df1 = pd.DataFrame(data)

# 生成目标字典
mail_dict = Df1.groupby('Id')['mail-id'].apply(list).to_dict()
print(mail_dict)
# 输出:{1: ['xyz@gm', 'ygzbb'], 2: ['Ghh', 'Hjkk']}

情况2:每行存储多个mail-id(用分隔符拼接)

如果你的Df1中,每个Id对应的mail-id是用逗号(或其他分隔符)拼接的字符串(比如Id=1的行是xyz@gm,ygzbb),可以先拆分字符串再转字典:

import pandas as pd

# 构造拼接格式的示例DataFrame
data = {
    'Id': [1, 2],
    'mail-id': ['xyz@gm,ygzbb', 'Ghh,Hjkk']
}
Df1 = pd.DataFrame(data)

# 拆分字符串并生成字典
mail_dict = Df1.set_index('Id')['mail-id'].str.split(',').to_dict()
print(mail_dict)
# 输出:{1: ['xyz@gm', 'ygzbb'], 2: ['Ghh', 'Hjkk']}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 20:32:52