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

如何找出原始DataFrame相比当前子集DataFrame被删除的行

实现方案

前提:使用Python Pandas库操作DataFrame

方法1:基于索引取差集(推荐,效率最高)

因为你的两个DataFrame的索引都是唯一主键UniqueID,直接操作索引即可最快得到结果:

# 提取DF1存在但DF2不存在的索引集合
deleted_ids = DF1.index.difference(DF2.index)
# 从DF1中筛选对应索引的行,得到仅包含被删除行的DF3
DF3 = DF1.loc[deleted_ids].copy()

说明:该方法直接利用Pandas索引的优化特性,无需逐行对比字段值,1000行量级的计算耗时可以忽略。

方法2:全字段对比匹配(适合需要严格校验行内容的场景)

如果你担心存在索引相同但其他字段被修改的情况,可以用外连接对比整行所有字段值,确保完全一致才判定为匹配:

# 临时添加存在标记列
DF1["_flag"] = 1
DF2["_flag"] = 1

# 基于所有字段做外连接,添加匹配标记
merged_df = DF1.merge(
    DF2,
    how="outer",
    on=list(DF1.columns),
    indicator=True
)

# 筛选仅在DF1中存在的行,删除临时列得到DF3
DF3 = merged_df[merged_df["_merge"] == "left_only"].drop(columns=["_merge", "_flag"])

# 清理DF1和DF2的临时标记列
DF1.drop(columns=["_flag"], inplace=True)
DF2.drop(columns=["_flag"], inplace=True)

说明:该方法校验逻辑更严格,适合对数据准确性要求高的场景。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 00:06:03