Python 如何在集团层面检查重复?
如何检查并删除重复的组?这是我的数据框:Python 如何在集团层面检查重复?,python,pandas,dataframe,Python,Pandas,Dataframe,如何检查并删除重复的组?这是我的数据框: 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
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
我尝试分组并检查重复项,但这将检查观测级别上的值。如何在组级别检查重复项?您可以通过使用frozenset
进行使用和聚合,然后通过删除重复项(默认情况下为所有列)并获取索引-所有组名称:
idx = df.groupby('Group').agg(frozenset).drop_duplicates().index
#alternative solution
idx = df.groupby('Group').agg(tuple).drop_duplicates().index
或通过和重塑为:
最后一个筛选条件为:
g = df.groupby('Group').cumcount()
idx = df.set_index(['Group',g]).unstack().drop_duplicates().index
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