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

对比两个单id列Pandas DataFrame,提取df1中独有的id值

实现方案

方法1:isin 筛选(推荐,写法简洁高效,保留df1中的重复id)

直接通过反向匹配df2的id值筛选结果:

import pandas as pd
colnames = ['id']
df1 = pd.read_csv(r'file1.csv', names=colnames)
df2 = pd.read_csv(r'file2.csv', names=colnames)

# 核心代码:筛选df1中id不在df2里的行
result = df1[~df1['id'].isin(df2['id'])]

输出结果符合预期:

id
3   4
4   5

方法2:merge 实现(适配需要关联多字段的复杂场景)

你之前用了how='right'右连接,方向完全反了,应该用左连接配合标记位筛选:

import pandas as pd
colnames = ['id']
df1 = pd.read_csv(r'file1.csv', names=colnames)
df2 = pd.read_csv(r'file2.csv', names=colnames)

# 左连接并添加关联标记
df = df1.merge(df2, on='id', how='left', indicator=True)
# 筛选仅在df1中存在的行
result = df[df['_merge'] == 'left_only'][['id']]

方法3:集合差集(仅需要去重结果时使用)

如果不需要保留df1中的重复id,只要去重后的差集,可以用集合运算:

unique_diff_ids = set(df1['id']) - set(df2['id'])
result = pd.DataFrame({'id': list(unique_diff_ids)})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 03:48:02