#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