如何在组级别检查重复项?

时间:2018-10-30 10:27:24

标签: 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           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    

我尝试对分组进行分组并检查重复项,但这将在观察级别上检查值。如何在组级别检查重复项?

1 个答案:

答案 0 :(得分:1)

您可以使用groupby并通过aggflatMap进行聚合,然后通过drop_duplicates删除重复项(默认情况下所有列均如此)并获取索引-所有组名:

frozenset

或使用cumcountset_index通过unstack重塑为:

idx = df.groupby('Group').agg(frozenset).drop_duplicates().index
#alternative solution
idx = df.groupby('Group').agg(tuple).drop_duplicates().index

通过boolean indexingisin进行最后过滤:

g = df.groupby('Group').cumcount()
idx = df.set_index(['Group',g]).unstack().drop_duplicates().index