如何在Python的DataFrame中找出全列重复且出现超2次的行?
筛选多列重复且出现次数超2次的行组
给定如下结构的DataFrame:
import pandas as pd data = { 'id': [1,1,1,1,1,1,2,2,3,3,3,3], 'Date': ['2022-01-01','2022-01-01','2022-01-01','2022-01-02','2022-01-02','2022-01-02','2022-01-01','2022-01-01','2022-01-01','2022-01-01','2022-01-01','2022-01-01'] } df = pd.DataFrame(data)
需求是找出id和Date两列完全相同、且该组合出现次数超过2次的记录组,最终输出去重后的这些组合。
方法一:使用groupby.filter
通过分组筛选出符合次数要求的记录,再去重:
# 分组筛选次数>2的组,然后去重 result = df.groupby(['id', 'Date']).filter(lambda x: len(x) > 2).drop_duplicates() print(result)
输出结果:
id Date 0 1 2022-01-01 3 1 2022-01-02 8 3 2022-01-01
方法二:添加计数列后筛选
先通过transform计算每组的出现次数,再筛选符合条件的记录并去重:
# 添加每组计数列 df['group_count'] = df.groupby(['id', 'Date'])['id'].transform('count') # 筛选次数>2的记录,保留目标列并去重 result = df[df['group_count'] > 2][['id', 'Date']].drop_duplicates() print(result)
两种方法都能得到符合预期的结果。
内容的提问来源于stack exchange,提问作者ML_Enthu
相关产品推荐
相关产品推荐

