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

Pandas如何过滤DataFrame中不存在于另一DataFrame列组合的行

Pandas多字段组合不匹配行筛选实现

需求说明

现有两个DataFrame df_2 和 df_count,需要筛选出df_2中Name_1、Name_2两列的组合,不在df_count对应列组合中的所有行。

实现方法

方法1:merge反连接(可读性高,推荐多字段匹配使用)

通过左连接+匹配标记的方式筛选不匹配行,逻辑清晰,不易出错:

# 对两个DataFrame按Name_1、Name_2做左连接,新增字段标记匹配来源
merged_df = df_2.merge(df_count, on=['Name_1', 'Name_2'], how='left', indicator=True)
# 筛选仅在df_2中存在的行(即组合不匹配的行),删除标记字段得到最终结果
unmatched_df = merged_df[merged_df['_merge'] == 'left_only'].drop('_merge', axis=1)

方法2:组合列isin判断(写法简洁)

将两列组合为元组后判断是否在匹配列表中,代码更简短:

# 提取df_count中所有合法的Name_1、Name_2组合
valid_pairs = set(df_count.itertuples(index=False, name=None))
# 筛选df_2中组合不在合法集合内的行
unmatched_df = df_2[~df_2[['Name_1', 'Name_2']].apply(tuple, axis=1).isin(valid_pairs)]

输出说明

两种方法得到的unmatched_df就是所需的不匹配行结果,会保留df_2的所有原始字段。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 01:18:00