如何检查重复的组并删除它们?这是我的数据框:
Group Value_1 Value_2
A 17 0.1
A 20 0.8
A 22 0.9
A 24 0.13
B 17 0.1
B 20 0.8
B 22 0.9
B 24 0.13
C 17 0.1
C 20 0.8
C 22 0.9
C 26 0.11
在这个数据框中,组 A 和 B 是重复的,而 C 不是,因为它的第四个元素不同,因此更深层次的是唯一而不是重复,结果数据框应该是这样的:
Group Value_1 Value_2
A 17 0.1
A 20 0.8
A 22 0.9
A 24 0.13
C 17 0.1
C 20 0.8
C 22 0.9
C 26 0.11
我尝试分组并检查重复项,但这将检查观察级别的值。如何检查组级别的重复?
您可以使用 groupby
并按 agg
聚合使用 frozenset
,然后通过 drop_duplicates
删除重复项(默认情况下所有列)并获取索引 - 所有组名称:
idx = df.groupby('Group').agg(frozenset).drop_duplicates().index
#alternative solution
idx = df.groupby('Group').agg(tuple).drop_duplicates().index
或 reshape 为 cumcount
与 set_index
和 unstack
:
g = df.groupby('Group').cumcount()
idx = df.set_index(['Group',g]).unstack().drop_duplicates().index
最后过滤条件 boolean indexing
与 isin
:
df = df[df['Group'].isin(idx)]
print (df)
Group Value_1 Value_2
0 A 17 0.10
1 A 20 0.80
2 A 22 0.90
3 A 24 0.13
8 C 17 0.10
9 C 20 0.80
10 C 22 0.90
11 C 26 0.11
我是一名优秀的程序员,十分优秀!