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

如何用Python Pandas基于字典键创建列并按列表匹配赋值?

给DataFrame新增匹配字典映射的Group列

需求说明

给定映射字典:

{'A':['John','Mark','Jane'],'B':['Mike','Rob','James']}

和初始DataFrame:

Namexy
John------
Jane------
Rob------

需要新增Group列,根据Name值匹配字典内的列表元素,填充对应的字典键,最终得到目标DataFrame。

解决步骤

1. 转换字典映射结构

原字典是组名: 成员列表的形式,我们需要先转换成成员: 组名的一对一映射,这样能快速查找每个Name对应的Group:

group_dict = {'A':['John','Mark','Jane'],'B':['Mike','Rob','James']}

# 转换为成员到组名的映射
name_group_map = {}
for group, members in group_dict.items():
    for member in members:
        name_group_map[member] = group

转换后的映射结构为:

{'John': 'A', 'Mark': 'A', 'Jane': 'A', 'Mike': 'B', 'Rob': 'B', 'James': 'B'}

2. 给DataFrame添加Group列

使用pandas的map()方法,将Name列的值映射到对应的组名:

import pandas as pd

# 构建初始DataFrame
df = pd.DataFrame({
    'Name': ['John', 'Jane', 'Rob'],
    'x': ['---', '---', '---'],
    'y': ['---', '---', '---']
})

# 新增Group列
df['Group'] = df['Name'].map(name_group_map)

最终结果

执行后得到的DataFrame:

NamexyGroup
John------A
Jane------A
Rob------B

简化写法

可以用字典推导式一行完成字典转换:

name_group_map = {member: group for group, members in group_dict.items() for member in members}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 11:45:37