如何用pandas一行代码识别重复值(以查找重复邮箱为例)
解答
完全可以省略临时变量,改写为一行代码,和你原有逻辑输出完全一致的实现如下:
# 输出重复邮箱+对应出现次数,和原有三行逻辑结果一致 df.value_counts().to_frame(name='count').query('count > 1')
逻辑说明
原有三行代码的核心是三个步骤:对email列做频次统计、转DataFrame并重命名列、过滤出出现次数大于1的记录,通过pandas的链式调用即可合并为单行:
df.value_counts():完成email字段的频次统计,返回带索引的Seriesto_frame(name='count'):将Series转为DataFrame的同时直接指定列名,替代单独给columns赋值的步骤query('count > 1'):完成过滤逻辑,也可以用布尔索引写法[lambda x: x['count'] > 1]替代,效果完全一致
如果你是要返回所有出现过重复的原始邮箱记录(比如出现两次的a会返回两条对应的行,而非去重后的一条统计记录),可以用更简洁的一行写法:
# 输出所有重复的原始行,包含所有重复出现的邮箱条目 df[df.duplicated(subset='email', keep=False)]
内容的提问来源于stack exchange,提问作者jbuddy_13
相关产品推荐
相关产品推荐

