如何统计Pandas DataFrame中排除原始行的重复行数?
Pandas重复行统计:排除原始行的实现方案
正确统计方法
要统计排除首次出现的原始行后的重复行数,直接用duplicated()的默认行为即可——它默认参数是keep='first',会把除第一次出现外的所有重复行标记为True,对结果求和就是你要的数量:
def count_duplicates_exclude_original(df): return df.duplicated().sum()
拿你的测试场景举例:3条完全重复的行,这个函数会返回2,正好符合预期。
为什么之前的尝试出问题
- 用
keep=False时,所有重复行(包括第一次出现的)都会被标记为True,所以求和得到3,这是把所有重复行都算进去了,不符合你的需求。 - 你说移除
keep=False时出现属性缺失错误,十有八九是代码写错了——比如把sum()写成了sum(少了括号)。df.duplicated()返回的是Series对象,它有sum()方法,但没有sum属性,少了括号就会触发属性缺失的报错,补上括号就行。
额外扩展
如果你的需求变成排除最后一次出现的行,只需要把参数改成keep='last':
df.duplicated(keep='last').sum()
内容的提问来源于stack exchange,提问作者Emma__BB
相关产品推荐
相关产品推荐

