首页 > 解决方案 > 仅在使用 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)

谢谢你的帮助。

标签: pythonpandas

解决方案


函数groupby不是必需的,为了更好地使用DataFrame.duplicated多个列和参数keep=False来获取所有欺骗,然后过滤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

推荐阅读