Как в Pandas таблице найти удалить строки с одинаковыми стобцами?
Как из таблицы, полученное через dataframe:
| Reg | CELL | LAC_x | RAC_x | LAC_y | RAC_y | |
|---|---|---|---|---|---|---|
| 0 | HB | HB01571 | 32097 | 107 | 32097 | 107 |
| 3 | HB | HB01572 | 32097 | 107 | 32097 | 107 |
| 6 | HB | HB01573 | 32097 | 107 | 32097 | 107 |
| 9 | HB | HB02311 | 32102 | 112 | 32118 | 122 |
| 12 | HB | HB02312 | 32102 | 112 | 32118 | 122 |
| 3175 | IR | IR29422 | 5277 | 77 | 5277 | 77 |
| 3178 | IR | IR29423 | 5277 | 77 | 5277 | 77 |
| 3181 | IR | IR29861 | 5254 | 122 | 5253 | 12 |
| 3184 | IR | IR29862 | 5254 | 122 | 5253 | 12 |
| 3187 | IR | IR29863 | 5254 | 122 | 5253 | 12 |
Получить слеудющую таблицу:
| Reg | CELL | LAC_x | RAC_x | LAC_y | RAC_y | |
|---|---|---|---|---|---|---|
| 9 | HB | HB02311 | 32102 | 112 | 32118 | 122 |
| 12 | HB | HB02312 | 32102 | 112 | 32118 | 122 |
| 3181 | IR | IR29861 | 5254 | 122 | 5253 | 12 |
| 3184 | IR | IR29862 | 5254 | 122 | 5253 | 12 |
| 3187 | IR | IR29863 | 5254 | 122 | 5253 | 12 |
Отличия в столбцах: LAC_x, LAC_y, RAC_x, RAC_y Знаю, что есть дубликаты строк, но он же убирает только дубликаты строк ведь? Данным кодом я пытался это сделать, он мне выдал все почему то tru:
oldBsTable['duplicate'] = oldBsTable.duplicated(subset=['LAC_x', 'LAC_y'], keep=False)
Для дополнения вот весь код целиком:
oldBsTable = oldBsTable.reindex(columns=["Reg", "CELL", "LAC_x", "RAC_x", "LAC_y", "RAC_y"])
print("oldBsTable:")
print(oldBsTable)
testTable = oldBsTable[oldBsTable['LAC_x'] != oldBsTable['LAC_y']]
print("testTable:")
print(testTable)
его результат:
oldBsTable:
Reg CELL LAC_x RAC_x LAC_y RAC_y
0 HB HB01571 32097 107 32097 107
3 HB HB01572 32097 107 32097 107
6 HB HB01573 32097 107 32097 107
9 HB HB02311 32102 112 32118 122
12 HB HB02312 32102 112 32118 122
... .. ... ... ... ... ...
3175 IR IR29422 5277 77 5277 77
3178 IR IR29423 5277 77 5277 77
3181 IR IR29861 5254 122 5254 122
3184 IR IR29862 5254 122 5254 122
3187 IR IR29863 5254 122 5254 122
[1059 rows x 6 columns]
testTable:
Reg CELL LAC_x RAC_x LAC_y RAC_y
0 HB HB01571 32097 107 32097 107
3 HB HB01572 32097 107 32097 107
6 HB HB01573 32097 107 32097 107
9 HB HB02311 32102 112 32118 122
12 HB HB02312 32102 112 32118 122
... .. ... ... ... ... ...
3175 IR IR29422 5277 77 5277 77
3178 IR IR29423 5277 77 5277 77
3181 IR IR29861 5254 122 5254 122
3184 IR IR29862 5254 122 5254 122
3187 IR IR29863 5254 122 5254 122
[1059 rows x 6 columns]
Ответы (1 шт):
Автор решения: Oopss
→ Ссылка
Если я правильно понял, то нужно просто сравнить нужные значения.
oldBsTable = df[df['LAC_x'] != df['LAC_y']]
print( oldBsTable )
N Reg CELL LAC_x RAC_x LAC_y RAC_y
3 9 HB HB02311 32102 112 32118 122
4 12 HB HB02312 32102 112 32118 122
7 3181 IR IR29861 5254 122 5253 12
8 3184 IR IR29862 5254 122 5253 12
9 3187 IR IR29863 5254 122 5253 12
Вставил код , результат
oldBsTable = oldBsTable.reindex(columns=["Reg", "CELL", "LAC_x", "RAC_x", "LAC_y", "RAC_y"])
print("oldBsTable:")
print(oldBsTable)
testTable = oldBsTable[oldBsTable['LAC_x'] != oldBsTable['LAC_y']]
print("testTable:")
print(testTable)
oldBsTable:
Reg CELL LAC_x RAC_x LAC_y RAC_y
0 HB HB01571 32097 107 32097 107
1 HB HB01572 32097 107 32097 107
2 HB HB01573 32097 107 32097 107
3 HB HB02311 32102 112 32118 122
4 HB HB02312 32102 112 32118 122
5 IR IR29422 5277 77 5277 77
6 IR IR29423 5277 77 5277 77
7 IR IR29861 5254 122 5253 12
8 IR IR29862 5254 122 5253 12
9 IR IR29863 5254 122 5253 12
testTable:
Reg CELL LAC_x RAC_x LAC_y RAC_y
3 HB HB02311 32102 112 32118 122
4 HB HB02312 32102 112 32118 122
7 IR IR29861 5254 122 5253 12
8 IR IR29862 5254 122 5253 12
9 IR IR29863 5254 122 5253 12
Process finished with exit code 0