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_values
与DataFrame.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] 举报,一经查实,本站将立刻删除。