如何在Pandas中检查DataFrame指定列是否存在重复值(无需删除行)
在Pandas中检查指定列是否存在重复值的简便方法
当然有更直接的方式啦!你现在用的比较唯一值数量和总行数的方法是可行的,但Pandas提供了更简洁直观的API来完成这个判断,完全不需要删除行就能知道指定列有没有重复值。
核心方法:duplicated() + any()
Pandas的Series.duplicated()方法会返回一个布尔值的Series,其中每个元素标记对应行是否是重复项(默认会保留第一次出现的行,标记后续的重复行)。配合any()方法,就能快速判断该列是否存在至少一个重复值:
# 检查'Student'列是否存在重复值 has_duplicates = df['Student'].duplicated().any() # 只有当存在重复时才执行删除操作 if has_duplicates: your_remove_duplicates_function(df)
补充说明
- 如果想标记所有重复行(包括第一次出现的那一行),可以给
duplicated()传入keep=False参数:df['Student'].duplicated(keep=False).any(),不过对于“是否存在重复”这个判断来说,两种方式的结果是一致的。 - 相比你原来的
len(df['Student'].unique()) < len(df.index),duplicated().any()的可读性更强,代码也更简洁,底层实现效率也不差。
内容的提问来源于stack exchange,提问作者Jeff Mitchell
相关产品推荐
相关产品推荐

