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

为何Pandas groupby与duplicated检测重复对结果矛盾?

问题原因与解决方案

矛盾原因

你用groupby.filter时的判断逻辑完全错误:

  • lambda x: len(x) < 1 是要筛选分组内数据量小于1的分组,但按cod_tbl和cod_entry分组后,每个分组必然包含至少1条数据(分组本身基于存在的键对生成),所以必然返回空DataFrame。
  • 而df.duplicated(subset=['cod_tbl','cod_entry'])是标记重复出现的键对(默认从第二次出现开始标记为True),能正确识别非首次出现的重复项,因此返回多个True值。

正确的groupby用法

如果想用groupby筛选所有存在重复的cod_tbl+cod_entry对,需把判断条件改为len(x) >= 2,这样就能拿到所有属于重复组的数据:

# 筛选出所有存在重复的键对对应的行
gp = df.groupby(['cod_tbl','cod_entry']).filter(lambda x: len(x) >= 2)
print(gp)

如果仅需统计每个键对的重复次数,可直接用size():

# 统计每个cod_tbl+cod_entry对的出现次数
counts = df.groupby(['cod_tbl','cod_entry']).size()
# 筛选出出现次数≥2的重复对
duplicate_pairs = counts[counts >= 2]
print(duplicate_pairs)

两种方法的差异

  • duplicated:返回布尔序列,标记每一行是否为非首次出现的重复项,适合快速标记或删除重复行。
  • groupby.filter:返回符合条件的整行数据,适合一次性提取所有重复组的记录,便于查看重复的具体内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 22:42:34