根据按列和行级别进行的分组比较,筛选Python-pandas中的非重复记录

p4tfgftt  于 2022-11-27  发布在  Python
关注(0)|答案(1)|浏览(105)

这是一个复杂的问题,我不能弄清楚这一点,我真的很感谢你在这方面的帮助。
以下 Dataframe 由panda函数DataFrame.duplicated()生成,基于“位置”(groupby)和“类别”,重复记录相应标记为真/假。

Number  Loc    Category        Date       IsDuplicate     
-----------------------------------------------------
1        A     jetski        01/01/2020       False
2        A     kayak         01/02/2020       False
3        A     jetski,kayak  01/04/2020       False
4        B     jetski        01/05/2020       False
5        B     jetski        01/07/2020       True
6        C     kayak         01/08/2020       False
7        C     kayak         01/09/2020       True
8        C     jetski        01/10/2020       False

我的期望是根据'Loc'(groupby)、'Category'和'IsDuplicate'建立另一个数据行,以便只表示实际重复的值。只有False数据才应该标示为'不适用'
积分:
1.按地点分组
1.对于任何位置:
a.如果'IsDuplicate' == True,则匹配'category'列,并仅返回匹配行(True/False)
b.如果发现任何其他仅为假记录,则返回'不适用'
1.对于位置中任何只有False的值,返回“不适用”
预期输出:

Number  Loc    Category       Date       IsDuplicate     Only_Dupes   
---------------------------------------------------------------------
1        A     jetski       01/01/2020    False         Not Applicable       
2        A     kayak        01/02/2020    False         Not Applicable       
3        A     jetski,kayak 01/04/2020    False         Not Applicable
4        B     jetski       01/05/2020    False         False          
5        B     jetski       01/07/2020    True          True           
6        C     kayak        01/08/2020    False         False           
7        C     kayak        01/09/2020    True          True           
8        C     jetski       01/10/2020    False         Not Applicable

如果需要进一步的澄清,请告诉我。我感谢你的所有协助。

jogvjijk

jogvjijk1#

您可以尝试创建两个条件,一个用于检查重复项,另一个用于获取按位置和类别分组的列类别的出现次数,然后使用np.where指定duplicated()的结果,其中count大于1,否则为Not Applicable

c1 = df.duplicated(['Loc','Category'])
c2 = df.groupby(['Loc','Category'])['Category'].transform('count').gt(1)
df['Only_Dupes'] = np.where(c2,c1,'Not Applicable')

或类似的逻辑,但在转换中链接它们:
第一次

相关问题