如何统计DataFrame中的重复行数及特定重复场景的次数?
解决DataFrame的两类重复统计需求
嘿,我来帮你搞定这两个重复统计的需求,用Pandas就能轻松实现,先把你的示例数据列出来方便对照:
示例数据:
A B C 1 2 3 1 2 3 1 1 2 2 1 2 2 2 1 3 2 1
一、按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
相关产品推荐
相关产品推荐

