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

如何在新Pandas DataFrame中添加另一DataFrame中无匹配值的行?

Pandas筛选DataFrame中不匹配的行

原始数据示例

>>> df1
        A
0  value1  
1  value2  
2  value3 
3  value4
4  value5 

>>> df2
        A
0  value2  
1  value3 
2  value4

需求说明

生成df3,仅保留df1中A列值不在df2.A中的行,最终结果如下:

>>> df3
        A
0  value1  
1  value5 

注:df1和df2除A列外可能包含其他列,且A列所有值均为字符串。

实现方案

方案一:利用isin()取反筛选

通过isin()生成布尔掩码,再对掩码取反(~),直接筛选出符合条件的行,无需单独保留布尔值结果:

# 生成筛选掩码,筛选df1.A不在df2.A中的行
mask = ~df1['A'].isin(df2['A'])
df3 = df1[mask].reset_index(drop=True)

方案二:通过merge()实现左连接筛选

借助左连接操作,保留df1中无法与df2匹配的行,具体步骤如下:

# 左连接df1与df2,添加_merge列标记匹配状态
df3 = df1.merge(df2, on='A', how='left', indicator=True)
# 筛选仅在df1中存在的行,移除_merge列并重置索引
df3 = df3[df3['_merge'] == 'left_only'].drop(columns='_merge').reset_index(drop=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 06:48:14