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

如何在Python Pandas中基于另外两列值删除DataFrame某列重复项

Pandas按规则对重复ID行进行过滤

示例数据构造

先还原你的DataFrame:

import pandas as pd

data = {
    'ID': [111, 111, 222, 222, 333, 333],
    'TYPE': ['A', 'B', 'B', 'A', 'B', 'A'],
    'TG_A': [1, 1, 1, 1, 0, 0],
    'TG_B': [0, 0, 0, 0, 1, 1]
}
df = pd.DataFrame(data)

核心实现逻辑

你需要的规则是:仅当ID重复时,删除满足(TYPE='B'且TG_A=1)或(TYPE='A'且TG_B=1)的行。可以通过构造布尔掩码直接过滤:

# 构造需要删除的行的掩码:同时满足「符合删除条件」和「ID重复」
drop_mask = (
    ((df['TYPE'] == 'B') & (df['TG_A'] == 1)) | 
    ((df['TYPE'] == 'A') & (df['TG_B'] == 1))
) & df.duplicated('ID', keep=False)

# 过滤掉需要删除的行
result_df = df[~drop_mask]

验证结果

打印result_df会得到你期望的输出:

ID TYPE  TG_A  TG_B
0  111    A     1     0
3  222    A     1     0
4  333    B     0     1

如果需要重置索引,可以追加result_df = result_df.reset_index(drop=True)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 18:30:18