Панды включающие уникальные значения из двух столбцов

Я не могу найти элегантный способ выбрать уникальные строки из столбца A и колонка B но не совместно и не в последовательности. Это сделано для того, чтобы сохранить "инклюзивное" пересечение уникальных значений из этих двух столбцов.

Моя цель - сохранить как можно больше уникальных значений в столбцах. A а также B, Столбцы рассматриваются совместно, но я ищу все уникальные "комбинации" их значений...

Примерный фрейм данных

df1 = pd.DataFrame({"A": [ "A1", "A2", "A2", "A3", "A3", ],
                    "B": [ "B1", "B1", "B2", "B3", "B1", ], },
                   index=[ 0, 1, 2, 3, 4, ])

Результат:

    A   B
0  A1  B1
1  A2  B1
2  A2  B2
3  A3  B3
4  A3  B1

Это ничего полезного не делает...

df2 = df1.drop_duplicates( subset=[ "A", "B", ], keep="first", inplace=False, )

Результат:

    A   B
0  A1  B1
1  A2  B1
2  A2  B2
3  A3  B3
4  A3  B1

Код ниже оставляет дубликаты B1 которые могут быть удалены позже с помощью drop_duplicates на колонке B но потом A2 также будет удален, и его можно было бы сохранить, если бы он присутствовал в одном ряду с B2как это было на index=2 исходного кадра данных.

df3 = df1.drop_duplicates( subset=[ "A", ], keep="first", inplace=False, )

Результат:

    A   B
0  A1  B1
1  A2  B1
3  A3  B3

Как уже упоминалось выше A2 удаляется, но была возможность сохранить его, если он присутствовал в одном ряду с B2как это было на index=2 исходного кадра данных.

df4 = df3.drop_duplicates( subset=[ "B", ], keep="first", inplace=False, )

    A   B
0  A1  B1
3  A3  B3

Желаемый результат:

    A   B
0  A1  B1
1  A2  B2
2  A3  B3

Поэтому моя цель - сохранить как можно больше уникальных значений в столбцах. A а также B, Столбцы рассматриваются совместно, но я ищу все уникальные "комбинации" их значений...

1 ответ

Решение

Попробуйте ниже код:

df1.drop_duplicates( subset=[ "A" and "B"], keep="first", inplace=False, )

Выход:

    A   B
0   A1  B1
2   A2  B2
3   A3  B3
Другие вопросы по тегам