Вы можете попробовать создать 2 условия: 1 для проверки дубликатов, а другое - для отсутствия появления столбцов Категория, сгруппированных по Lo c и Категория, а затем, используя np.where
, назначить результат duplicated()
, где количество больше 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')
Или аналогичные logi c, но объединяя их в цепочку преобразований:
df['Only_Dupes'] = df.groupby(['Loc','Category'])['Category'].transform(lambda x:
np.where(x.count()>1,x.duplicated(),'Not Applicable'))
print(df)
Number Loc Category IsDuplicate Only_Dupes
0 1 A jetski False Not Applicable
1 2 A kayak False Not Applicable
2 3 A jetski,kayak False Not Applicable
3 4 B jetski False False
4 5 B jetski True True
5 6 C kayak False False
6 7 C kayak True True
7 8 C jetski False Not Applicable