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

Python/SQL对比两数据集列:匹配姓氏/银行账户与付款描述

需求说明

现有两个数据集:

  • 数据集1(表名user):包含firstName、lastName、email、bankaccount列
  • 数据集2(表名book):包含银行详情描述列description,格式示例:"NLXXRABOXXXXXXXXXX XXXXXXXXXXXXX firstName lastName date"

需要判断book.description中是否存在对应user的lastName或bankaccount,以此验证用户是否完成付款。当前已将两个数据集导入Pandas和SQL环境,尝试的SQL语句无法实现批量匹配,现提供可行的SQL和Pandas实现方案。

SQL 实现方案

方案1:用 EXISTS 子查询做批量匹配

通过EXISTS子查询,逐个检查每个用户的lastName或bankaccount是否出现在任意一条book的描述中,返回匹配成功的用户邮箱:

SELECT u.email
FROM user u
WHERE EXISTS (
    SELECT 1
    FROM book b
    WHERE b.description LIKE CONCAT('%', u.lastName, '%')
       OR b.description LIKE CONCAT('%', u.bankaccount, '%')
);

方案2:用 JOIN 关联查询(可返回匹配的描述)

如果需要同时查看匹配到的描述内容,用JOIN关联两张表,再通过DISTINCT去重同一用户的重复匹配结果:

SELECT DISTINCT u.email, b.description
FROM user u
JOIN book b 
  ON b.description LIKE CONCAT('%', u.lastName, '%')
  OR b.description LIKE CONCAT('%', u.bankaccount, '%');
Pandas 实现方案

假设用户表的DataFrame是df_user,银行描述表是df_book,提供两种实现方式:

方案1:遍历用户逐一匹配(高效处理750行描述)

import pandas as pd

matched_emails = []
# 遍历每个用户记录
for _, user in df_user.iterrows():
    # 检查描述列是否包含该用户的lastName或bankaccount
    match_flag = df_book['description'].str.contains(
        f"{user['lastName']}|{user['bankaccount']}",
        case=False  # 忽略大小写,不需要的话可以删掉这个参数
    ).any()
    if match_flag:
        matched_emails.append(user['email'])

# 去重后生成结果DataFrame
result = pd.DataFrame({'verified_email': list(set(matched_emails))})

方案2:交叉合并后筛选(适合小体量用户表)

如果用户表行数不多,可以先做交叉连接,再筛选匹配的记录:

# 交叉连接两张表
cross_join = df_user.assign(temp_key=1).merge(df_book.assign(temp_key=1), on='temp_key').drop('temp_key', axis=1)

# 筛选出描述包含lastName或bankaccount的记录
matched_records = cross_join[
    cross_join['description'].str.contains(cross_join['lastName'], case=False)
    | cross_join['description'].str.contains(cross_join['bankaccount'], case=False)
]

# 提取唯一的验证通过邮箱
result = matched_records[['email']].drop_duplicates()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 08:01:43