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