Панды включающие уникальные значения из двух столбцов
Я не могу найти элегантный способ выбрать уникальные строки из столбца 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