Выберите строки из кадра данных с одинаковыми значениями в нескольких столбцах, но с другим значением в другом - PullRequest
2 голосов
/ 09 апреля 2020

У меня есть pandas фрейм данных с четырьмя столбцами объектов и одним столбцом меток. Существует некоторая проблема с набором данных. Есть несколько строк с одинаковыми значениями для объектов, но они помечены по-разному. Я знаю, как найти дубликаты для нескольких столбцов, используя

df[df.duplicated(keep=False)]

Как мне найти дубликаты объектов с конфликтующими метками?

Например, в кадре данных, как этот

    a    b    c    label
0   1    1    2     y
1   1    1    2     x
2   1    1    2     x
3   2    2    2     z
4   2    2    2     z

Я хочу вывести что-то ниже

a    b    c    label
1    1    2    y
1    1    2    x

Ответы [ 2 ]

2 голосов
/ 09 апреля 2020

IIU C, попробуйте это:

df[df.groupby(['a','b','c'])['label'].transform('nunique') > 1]

Вывод:

   a  b  c label
0  1  1  2     y
1  1  1  2     x
2  1  1  2     x
0 голосов
/ 09 апреля 2020

Вы можете передать список столбцов параметру subset в .duplicated(), чтобы эти столбцы учитывались только при проверке дубликатов.

В вашем случае вы бы позвонили df.duplicated(subset=["a", "b", "c"], keep=False).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...