You need to enable JavaScript to run this app. 如何查找两个Pandas DataFrame的差异,提取dataframeA有而dataframeB没有的行
优惠活动
大模型
产品
解决方案
定价
更多

如何查找两个Pandas DataFrame的差异,提取dataframeA有而dataframeB没有的行

基于name列取DataFrame差集实现方案

实现思路

以name字段为匹配键,过滤出dataframeA中name值不存在于dataframeB的name列的记录,重置索引即可得到符合要求的结果。

实现代码(pandas)

方法1:isin反向过滤(最简洁)

import pandas as pd

# 构造示例数据
df_a = pd.DataFrame({"id": [1,2,3,4], "name": ["aaa", "bbbb", "cccc", "gggg"]})
df_b = pd.DataFrame({"id": [1,2,3], "name": ["ddd", "aaa", "gggg"]})

# 核心过滤逻辑
result = df_a[~df_a["name"].isin(df_b["name"])].reset_index(drop=True)
# 重置结果的id列为连续从1开始的数值,匹配预期输出
result["id"] = result.index + 1

# 输出结果
print(result)

方法2:merge外连接匹配

适合需要同时保留两边更多匹配信息的场景:

df_a["flag"] = "a"
df_b["flag"] = "b"
# 按name外连接
merge_df = pd.merge(df_a, df_b, on="name", how="outer", suffixes=("_a", "_b"))
# 筛选仅在df_a中存在的记录
result = merge_df[merge_df["flag_b"].isna()][["id_a", "name"]].rename(columns={"id_a": "id"}).reset_index(drop=True)
result["id"] = result.index + 1

输出结果

运行上述代码后得到的结果和预期一致:

id  name
0   1  bbbb
1   2  cccc

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 13:48:00