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

基于Pandas实现CSV/Excel中字典键匹配并生成对应值列

最Pythonic的Pandas处理方案来啦!

嘿,这个需求用Pandas处理简直是量身定做,给你两个实用又符合Python风格的方法,按需选就行:

方法一:矢量化正则匹配(高效首选)

如果你的数据集比较大,这种矢量化操作比逐行处理快N倍,完全是Pandas的正确打开方式:

import pandas as pd
import re

# 你的映射字典
my_dict = {'Awesome': 'Sauce', 'Foo': 'Barr'}

# 读取CSV/Excel文件(替换成你的文件路径)
df = pd.read_csv('your_data.csv')
# df = pd.read_excel('your_data.xlsx')

# 构建匹配字典键的正则表达式,支持不区分大小写
pattern = '|'.join(re.escape(key) for key in my_dict.keys())
# 提取Col B中匹配的第一个键
df['Col C'] = df['Col B'].str.extract(f'({pattern})', flags=re.IGNORECASE)
# 统一大小写后映射到字典值(解决原数据中键大小写不一致的问题)
df['Col C'] = df['Col C'].str.capitalize().map(my_dict)

运行后你就能看到Col C里完美对应上了Sauce和Barr,而且大数据量下性能拉满!

方法二:自定义函数+apply(灵活易读)

如果需要更灵活的匹配逻辑(比如优先匹配某个键、处理多键匹配的情况),用apply配合自定义函数会更直观:

import pandas as pd

my_dict = {'Awesome': 'Sauce', 'Foo': 'Barr'}
df = pd.read_csv('your_data.csv')

def get_match_value(text, mapping):
    # 遍历字典,检查文本中是否包含键(不区分大小写)
    for key, value in mapping.items():
        if key.lower() in text.lower():
            return value
    return None  # 无匹配时返回None,也可以改成你需要的默认值

# 逐行应用函数生成Col C
df['Col C'] = df['Col B'].apply(lambda x: get_match_value(x, my_dict))

这个方法逻辑清晰,新手也能一眼看懂,适合需要定制匹配规则的场景。

小提示

  • 如果你的字典键都是严格大小写匹配的,把flags=re.IGNORECASE和str.capitalize()去掉就行
  • 如果一行里有多个匹配的键,两种方法都会返回第一个匹配到的结果,你可以根据需求调整遍历顺序或正则的优先级

内容的提问来源于stack exchange,提问作者Umar.H

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:26:53