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

如何在Pandas合并操作中获取被排除的数据行?

获取数据集中不匹配的记录(左反连接实现)

你需要的是左反连接效果:从第一个数据集(付费用户)中提取所有在第二个数据集里没有匹配项的记录,以下用Pandas给出两种实用方案:

方法1:使用merge+indicator参数

这种方法适合需要基于多列匹配的场景,能明确标记每条记录的来源:

import pandas as pd

# 构造示例数据集
premium_users = pd.DataFrame({
    'user_id': [1, 2, 3, 4],
    'username': ['alice', 'bob', 'charlie', 'david']
})

# 对比数据集(比如包含已匹配的付费用户+其他用户)
comparison_users = pd.DataFrame({
    'user_id': [3, 4, 5, 6],
    'username': ['charlie', 'david', 'eve', 'frank']
})

# 执行左连接并添加来源标记列
merged_result = premium_users.merge(
    comparison_users,
    on='user_id',  # 如果是多列匹配,改成on=['user_id', 'email']即可
    how='left',
    indicator=True
)

# 筛选仅存在于付费用户数据集的记录,即不匹配的1、2类数据
non_matched_df = merged_result[merged_result['_merge'] == 'left_only'].drop(columns='_merge')

方法2:使用isin+取反操作

如果只需要基于单个键(比如user_id)筛选,这种方法更简洁高效:

# 直接筛选user_id不在对比数据集中的记录
non_matched_df = premium_users[~premium_users['user_id'].isin(comparison_users['user_id'])]

两种方法最终都会得到包含user_id为1、2的新DataFrame,完全符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 15:59:52