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

如何基于两个查找DataFrame从目标DataFrame提取产品与销售代表信息

解决方案:从字符串列中匹配提取产品和销售代表信息

我来帮你搞定这个需求,用Pandas就能轻松实现。下面是完整的步骤和代码,完全贴合你的示例场景:

1. 先准备示例数据

首先我们把你给出的三个DataFrame用代码还原出来,方便后续测试:

import pandas as pd

# 主DataFrame df
df = pd.DataFrame({
    'col': [
        'Highest Sales was for Mobile Scott',
        'Lowest Returns was for Mobile Phone Steve',
        'Low Returns was for Paul'
    ]
})

# 产品DataFrame prod_df
prod_df = pd.DataFrame({'product': ['Laptop', 'Computer', 'Mobile', 'Mobile Phone']})
# 销售代表DataFrame sales_rep_df
sales_rep_df = pd.DataFrame({'sales_rep': ['Scott', 'Steve', 'Paul']})

2. 编写自定义提取函数

我们需要两个函数,分别从col列的字符串中匹配产品名和销售代表名:

# 提取产品名的函数
def extract_prod(text):
    prods = prod_df['product'].tolist()
    # 遍历产品列表,返回第一个匹配到的产品,没匹配到返回空字符串
    for prod in prods:
        if prod in text:
            return prod
    return ''

# 提取销售代表名的函数
def extract_rep(text):
    reps = sales_rep_df['sales_rep'].tolist()
    # 遍历销售代表列表,返回第一个匹配到的名字,没匹配到返回空字符串
    for rep in reps:
        if rep in text:
            return rep
    return ''

3. 应用函数生成新列

用apply方法把这两个函数应用到col列,生成prod和rep列:

df['prod'] = df['col'].apply(extract_prod)
df['rep'] = df['col'].apply(extract_rep)

4. 查看结果

运行上面的代码后,你就能得到预期的输出:

col         prod    rep
0        Highest Sales was for Mobile Scott       Mobile       
1  Lowest Returns was for Mobile Phone Steve  Mobile Phone  Steve
2                  Low Returns was for Paul                  Paul

这个方案逻辑清晰,能灵活处理只有产品、只有销售代表或者两者都有的情况,完全适配你的示例场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 09:57:31