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

匹配两个DataFrame并统计首个DataFrame中匹配行的出现次数

解决方法

首先还原示例中的两个DataFrame:

import pandas as pd

# 构建df1
df1 = pd.DataFrame({
    'A': ['Girl', 'Boy', 'Girl', 'Boy', 'Boy'],
    'B': [25, 10, 10, 5, 68],
    'C': ['APPLE', 'SAMSUNG', 'LG', 'Ap', 'SAM']
})

# 构建df2
df2 = pd.DataFrame({
    'D': ['APPLE', 'SAMSUNG', 'LG', 'GOOGLE'],
    'E': ['Ap', 'Sam', 'lg', 'Go']
})

接下来实现匹配统计逻辑:

  1. 提取df2中所有需要匹配的关键词,统一转为小写并去重,避免重复匹配
# 合并D、E列,转小写后生成匹配集合
match_set = set(df2['D'].str.lower().tolist() + df2['E'].str.lower().tolist())
  1. 筛选df1中C列值(转小写)属于匹配集合的行,再按A列分组统计数量
# 筛选符合条件的行,按A列分组计数
df3 = df1[df1['C'].str.lower().isin(match_set)]\
          .groupby('A', as_index=False)\
          .size()\
          .rename(columns={'size': 'Count'})

执行后得到的df3就是期望的结果:

A  Count
0  Boy      3
1  Girl     2

逻辑说明

  • 统一转小写是为了处理大小写不一致的匹配场景(比如df1的SAM和df2的Sam)
  • 使用isin()快速判断df1的C列值是否在目标匹配集合中
  • groupby().size()用于按A列统计符合条件的行数,最后重命名列名对应需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 03:24:53