У меня есть DF с макетом ниже. Фактическая таблица находится в диапазоне + 10 м строк, поэтому на большей стороне.
df = pd.DataFrame({'id1' : ['12a', '13b', '14c', '15d', '16e', '18g', '17f', '19h']
,'id2' : ['16e', '17f', '18g', '19h','12a', '14c','13b', '15d']
,'var1' : [i for i in range(8)]
,'var2' : list(np.random.randint(100, size = 8))
,'var3' : [1, 2, np.nan, 3, 2, np.nan, np.nan, 34]
})
>>> df
id1 id2 var1 var2 var3
0 12a 16e 0 66 1.0
1 13b 17f 1 9 2.0
2 14c 18g 2 48 NaN
3 15d 19h 3 13 3.0
4 16e 12a 4 67 2.0
5 18g 14c 5 88 NaN
6 17f 13b 6 92 NaN
7 19h 15d 7 99 34.0
Я хочу уменьшить идентификаторы в DF, который идет парами, например, id1 индексная строка 0 с id2 индексная строка 4. Все идентификаторы существуют в двух строках, и мне нужно проверить каждую строку и удалить одну из строк. В настоящее время у меня есть решение, которое является изменением строки и немного медленным.
Обратите внимание, что нельзя просто опустить нижнюю часть DF (индексная строка 4 и далее), поскольку необходимо проверить все идентификаторы ( id1 vs id2 ).
Финальный стол будет выглядеть так:
id1 id2 var1 var2
12a 16e 66 1.0
13b 17f 9 2.0
14c 18g 48 NaN
15d 19h 13 3.0
Все «быстрые» решения высоко ценятся.