Это очень сильно связано с Выбор строк в DataFrame на основе значений списка в столбце в пандах , где вместо того, чтобы искать только ОДИН столбец, я хочу искать соответствующие кортежи в двух столбцах.
Воспроизводимый пример
import pandas as pd
df = pd.DataFrame([[1, 2, 'a'], [1, 3, 'b'], [1, 3, 'c'], [1, 4, 'b'], [1, 2, 'c'], [1, 7, 'c']])
df.columns = ['id1', 'id2', 'name']
print(df)
Пример кадра данных
id1 id2 name
0 1 2 a
1 1 3 b
2 1 3 b
3 1 4 b
4 1 2 c
5 1 7 c
У меня есть список кортежей!
badTuples = [(1, 2), (1, 3), (1, 5)]
В первом элементе кортежей (1, 2)
; 1
используется для ссылки на значение в столбце 'id1'
, а 2
используется для ссылки на значение в столбце 'id2'
.
Я хочу удалить такие строки, у которых есть соответствующие ('id1', 'id2')
элементы кортежа! Иногда бывает так, что в списке кортежей
есть пары (1, 5)
, которых нет в DataFrame! В моем примере у нас есть только (1, 2), (1, 3) and (1, 4)
как id1, id2
пары в кадре данных!
В этом случае я хочу, чтобы эта пара (1, 5)
была пропущена.
Выходной DataFrame должен быть:
id1 id2 name
3 1 4 b
5 1 7 c