

新闻资讯
技术学院本文介绍一种精准去重策略:仅对 dataframe 中特定 id(如 id == 1)的重复行进行删除,保留其他 id 的所有记录,利用布尔掩码与 `duplicated()` 灵活组合实现。
在实际数据分析中,全局去重(如 df.drop_duplicates(subset='ID'))往往过于粗放——它会抹除所有 ID 的后续重复项,而业务需求常要求“选择性克制”:只对某个关键 ID 去重,其余 ID 完全保留原貌。例如,你可能希望 ID=1 的首次出现有效,后续同 ID 行一律剔除;但 ID=2 或 ID=3 的重复(如多条记录、不同时间戳)需完整保留。
核心思路是构造一个条件化布尔掩码(condit
ional boolean mask),仅标记「既是目标 ID 又属于重复项」的行,再通过逻辑取反 ~mask 进行过滤:
import pandas as pd
df = pd.DataFrame({
'ID': [1, 2, 3, 1, 2, 3],
'Value': ['A', 'B', 'A', 'B', 'C', 'A']
})
# ✅ 关键一步:仅对 ID == 1 的重复行标记为 True
mask = df['ID'].eq(1) & df.duplicated(subset=['ID'])
result = df[~mask].reset_index(drop=True)
print(result)输出:
ID Value 0 1 A 1 2 B 2 3 A 3 2 C 4 3 A
? 分步解析掩码逻辑:
⚠️ 注意事项:
总结:Pandas 的向量化布尔运算赋予了细粒度数据清洗强大能力。记住口诀——“条件筛选 + 重复标记 = 精准去重”,无需循环或 groupby,一行掩码即可优雅解题。