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

如何统计DataFrame中的重复行数及特定重复场景的次数?

解决DataFrame的两类重复统计需求

嘿,我来帮你搞定这两个重复统计的需求,用Pandas就能轻松实现,先把你的示例数据列出来方便对照:

示例数据:

ABC
123
123
112
212
221
321

一、按A列分组统计有重复的分组数量

你的需求是:统计A列中,对应行数≥2的分组个数(比如A=1有3行、A=2有2行,最终结果是2)。实现代码如下:

import pandas as pd

# 构造示例DataFrame
df = pd.DataFrame({
    'A': [1,1,1,2,2,3],
    'B': [2,2,1,1,2,2],
    'C': [3,3,2,2,1,1]
})

# 统计有重复的A分组数量
duplicate_A_groups = df.groupby('A').size().ge(2).sum()
print(duplicate_A_groups)  # 输出:2

代码解释:

  • df.groupby('A').size():按A列分组,计算每个分组的行数;
  • .ge(2):判断每个分组的行数是否≥2(返回布尔值,满足为True);
  • .sum():将布尔值转为数值(True=1,False=0)并求和,得到符合条件的分组总数。

二、统计完全重复行的组数

你的需求是:统计至少出现两次的完全相同行的组数(示例中只有1 2 3出现两次,最终结果是1)。这里有两种简洁的实现方式:

方式一:用value_counts()直接统计

# 统计完全重复行的组数
full_duplicate_rows = df.value_counts().ge(2).sum()
print(full_duplicate_rows)  # 输出:1

代码解释:

  • df.value_counts():统计每一行的出现次数,自动按次数降序排列;
  • .ge(2):筛选出出现次数≥2的行;
  • .sum():统计这类行的总数,也就是你要的重复组数。

方式二:用duplicated()标记后分组统计

如果你需要更直观的标记过程,可以用这个方法:

# 标记所有重复行(包括第一次出现的重复行)
df['is_duplicate'] = df.duplicated(keep=False)
# 按整行分组,判断该组是否有重复行,最后统计数量
full_duplicate_rows = df.groupby(df.columns.tolist()[:-1])['is_duplicate'].any().sum()
print(full_duplicate_rows)  # 输出:1

内容的提问来源于stack exchange,提问作者Tlaloc-ES

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 17:47:45