微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python – 只在带有pandas的组中获取重复值

我有一个数据框,如:

groups  ids numbers
group3  id4 89
group1  id1 50
group1  id1 30
group1  id2 90
group2  id4 89
group2  id6 76
group3  id4 90

并且它想要通过groupby组找到重复的id并获得一个新的数据框,只有按组重复的ID,例如:

group1  id1 50
group1  id1 30
group3  id4 89
group3  id4 90

我试过了:

for groups in df.groupby('groups'):
 print(df['ids'].duplicated)

谢谢你的帮助.

解决方法:

函数groupby不是必需的,为了更好的性能,使用多列的DataFrame.duplicated和参数keep = False获取所有的dupes,然后按boolean indexing过滤:

df = df[df.duplicated(['groups','ids'], keep=False)]
print (df)
   groups  ids  numbers
0  group3  id4       89
1  group1  id1       50
2  group1  id1       30
6  group3  id4       90

如果需要排序,请将DataFrame.sort_valuesDataFrame.reset_index一起添加认索引:

df = (df[df.duplicated(['groups','ids'], keep=False)]
         .sort_values(['groups','ids'])
         .reset_index(drop=True))
print (df)
   groups  ids  numbers
0  group1  id1       50
1  group1  id1       30
2  group3  id4       89
3  group3  id4       90

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐