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

Pandas如何按EMAIL、PRODUCT_ID、POST_CODE多条件删除DataFrame指定行

解决方案

你之前的写法默认基于全部字段判断重复,只要调整参数或使用反连接即可实现按指定字段过滤的需求,两种常用实现方式如下:

方法1:带来源标记的concat去重

给两个DataFrame加来源标识后合并,按指定的三个字段判断重复,去重后筛选原属于A的行即可:

# 给两个表新增临时来源标记
A['source'] = 'A'
B['source'] = 'B'
# 合并后按指定字段判重,删除所有存在重复的行
combined = pd.concat([A, B]).drop_duplicates(subset=["EMAIL", "PRODUCT_ID", "POST_CODE"], keep=False)
# 筛选原属于A的记录,删除临时标记列
result = combined[combined['source'] == 'A'].drop(columns='source')

方法2:左连接反选(逻辑更直观)

用pandas左连接标记匹配状态,直接筛选出A中未和B匹配的行:

# 按指定字段左连接,新增匹配状态标记
merged = A.merge(B, on=["EMAIL", "PRODUCT_ID", "POST_CODE"], how="left", indicator=True)
# 筛选仅在A中存在的行,删除临时标记列,保留A的原始字段
result = merged[merged['_merge'] == 'left_only'][A.columns]

两种方法输出的结果一致,均符合需求:

EMAILPRODUCT_IDPOST_CODESTORE_NAMESTORE_ID
abc@gmail.com43113000STR_21440
pqr@gmail.com43113000STR_31300

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 09:54:04