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

如何用字典匹配DataFrame列值生成新列?含多值分隔场景

Pandas 基于字典快速映射新增列(含多值场景)

一、单值分类数据的高效映射

不用手动循环,Pandas内置的map()方法就是干这个的,一行代码就能完成映射,效率比手动遍历高很多。

示例代码:

import pandas as pd

# 构造原始DataFrame
df = pd.DataFrame({
    "项目名称": ["Project Alpha", "Project Beta", "Project Charlie", "Project Alpha", "Project Alpha"]
})

# 定义映射字典
project_links = {
    "Project Alpha": "Link to Alpha",
    "Project Beta": "Link to Beta",
    "Project Charlie": "Link to Charlie"
}

# 新增列并完成映射
df["项目链接"] = df["项目名称"].map(project_links)

print(df)

输出结果:

项目名称项目链接
Project AlphaLink to Alpha
Project BetaLink to Beta
Project CharlieLink to Charlie
Project AlphaLink to Alpha
Project AlphaLink to Alpha

二、处理逗号分隔的多值场景

如果单元格是逗号分隔的多个分类值,用apply()结合匿名函数就能搞定:先拆分字符串、逐个映射,最后合并结果。注意用strip()处理元素前后的空格,避免因为空格导致映射失败。

示例代码:

import pandas as pd

# 构造含多值的DataFrame
df_multi = pd.DataFrame({
    "项目名称": ["Alpha,Beta,Gamma", "Project Alpha,Beta", "Charlie,Gamma"]
})

# 定义包含所有可能值的映射字典
multi_links = {
    "Alpha": "Link to Alpha",
    "Beta": "Link to Beta",
    "Gamma": "Link to Gamma",
    "Project Alpha": "Link to Alpha",
    "Charlie": "Link to Charlie"
}

# 多值映射逻辑:拆分→去空格→映射→合并
df_multi["项目链接"] = df_multi["项目名称"].apply(
    lambda x: ', '.join([multi_links.get(item.strip(), "无对应链接") for item in x.split(',')])
)

print(df_multi)

输出结果:

项目名称项目链接
Alpha,Beta,GammaLink to Alpha, Link to Beta, Link to Gamma
Project Alpha,BetaLink to Alpha, Link to Beta
Charlie,GammaLink to Charlie, Link to Gamma

用get()方法是为了避免遇到字典里没有的键时报错,找不到对应值会返回"无对应链接",你可以根据需求修改这个默认值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 23:43:29