Позвольте мне поделиться с вами тем, как я раньше сталкивался с такими проблемами. Очевидно, что есть более быстрые способы (однострочный), но ради ответа давайте сделаем это на более интуитивном уровне (позже вы увидите, что вы можете сделать это в одну строку).
Итак, поехали ...
df = pd.DataFrame({"B":['Blue','Red','Red','Blue','Blue'],"C":['Green','Green','Green','Orange','Orange']})
, что приводит к
![enter image description here](https://i.stack.imgur.com/NIzGh.png)
Шаг 1: выявить дублирование:
Для этого я просто добавляю еще один столбец (фасилитатор) и спрашиваю с помощью True / False, если B и C дублируются.
df['IS_DUPLICATED']= df.duplicated(subset=['B','C'])
![enter image description here](https://i.stack.imgur.com/6EPKt.png)
Шаг 2: Определите индексы 'True' IS_DUPLICATED:
dup_index = df[df['IS_DUPLICATED']==True].index
результат: Int64Index([2, 4], dtype='int64')
Шаг 3: пометить их как Nan:
df.iloc[dup_index]=np.NaN
![enter image description here](https://i.stack.imgur.com/lw11N.png)
Шаг 4: удалить столбец IS_DUPLICATED:
df.drop('IS_DUPLICATED',axis=1, inplace=True)
и желаемый результат:
![enter image description here](https://i.stack.imgur.com/mk2UV.png)