Удаление строк из df, содержащих одинаковую комбинацию из 2 столбцов

#python-3.x #pandas #dataframe #data-analysis

#python-3.x #pandas #фрейм данных #анализ данных

Вопрос:

У меня есть df, как показано ниже, который содержит комбинации идентификаторов, как я могу удалить те же комбинации? Например первые 4 строки представляют собой ту же комбинацию, но просто в другом порядке. Есть ли способ удалить все повторяющиеся комбинации, когда они расположены в разном порядке, но с сохранением одной уникальной комбинации?

 Name  ID1  Time  ID2  Time
Chi 232 24:18.4 111 19:17.7
Chi 111 19:17.7 232 24:18.4
Ari 444 02:33.0 555 57:34.2
Ari 555 57:34.2 444 02:33.0
Ca  321 27:11.7 787 22:14.5
Ca  443 42:49.4 667 47:47.4
Ca  667 47:47.4 443 42:49.4
  

Комментарии:

1. Действительно ли названы оба столбца ID ? У вас не должно быть повторяющихся имен столбцов

2. Извините, первый называется ID1, а второй — ID2 @user3483203

Ответ №1:

Вы можете отсортировать свои ID столбцы, чтобы создать маску с помощью duplicated , затем проиндексировать свой фрейм данных.

 u = df.filter(like='ID').values
m = pd.DataFrame(np.sort(u, axis=1)).duplicated()

df[~m]
  

   Name  ID1    Time1   ID2    Time2
0  Chi  232  24:18.4   111  19:17.7
2  Ari  444  02:33.0   555  57:34.2
4   Ca  321  27:11.7   787  22:14.5
5   Ca  443  42:49.4   667  47:47.4
  

Комментарии:

1. Вопрос — в идентификаторе столбца есть другие строки, которые содержат такое же повторяющееся значение идентификатора, например 232, но будут комбинированными с другим идентификатором. Это не приведет к удалению одного и того же идентификатора из одного и того же столбца, верно? Например, комбинация 111 232 исчезла, но я не хочу удалять все другие значения в столбце, которые имеют 232 bc, им может быть присвоен совершенно другой идентификатор. @newuser3483203

2. Это удаляет только дублирующиеся комбинации, 232 не будут удалены, если их комбинация также не была найдена в другом столбце

3. Спасибо! @user3483203