У меня есть все строки с определенным столбцом со списками. Выберите строки, которые не содержат по крайней мере один элемент из целевого списка - PullRequest
1 голос
/ 24 марта 2019

У меня есть фрейм данных, в котором есть строки, содержащие списки (давайте вызовем B) У меня есть целевой список (давайте назовем A).Я хочу сохранить все строки, которые не имеют хотя бы одного общего элемента в B и A.

A = [
'IAB24',
'IAB9-WS1',
'IAB9-WS2',
'IAB26-WS1',
'IAB9-9',
'IAB14-WS1',
'IAB14-1',
'IAB19-15',
'IAB25-5',
'IAB25-2',
'IAB19-WS2',
'IAB26',
'IAB25-3',
'IAB7-39']

Ниже приведен кадр данных B:

URL          Category
google.com  [IAB19, Technology & Computing, 0.878928848558...
youtube.com [IAB25, Non-Standard Content, 0.99999999988656...
facebook.co [IAB14, Society, 0.974491504626058713, IAB14-W...
amazon.com  [IAB22, Shopping, 0.732955918165917875]
wpedia.org  [IAB5, Education, 1.000000000000000000]

Я хочу проверитьесли какой-либо код в A отсутствует в B ['Category'], то я хотел бы сохранить их в новом фрейме данных с именем C.

1 Ответ

3 голосов
/ 24 марта 2019

Вы можете использовать набор пересечения.Мы хотим найти строки, где пересечение является пустым множеством.

df[[not(bool(set(A) & set(x))) for x in df.Category]]

Чуть проще:

df[[len(set(A) & set(x)) == 0 for x in df.Category]]
...