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

Контейнеры Python содержат ссылки на другие объекты. См. Этот пример:

>>> a = []
>>> b = [a]
>>> b
[[]]
>>> a.append(1)
>>> b
[[1]]

В этом b есть список, содержащий один элемент, который является ссылкой на список a. Список a изменен.

Умножение списка на целое эквивалентно добавлению списка к себе несколько раз (см. операции общей последовательности ). Итак, продолжаем с примера:

>>> c = b + b
>>> c
[[1], [1]]
>>>
>>> a[0] = 2
>>> c
[[2], [2]]

Мы видим, что список c теперь содержит две ссылки на список a, который эквивалентен c = b * 2.

Python FAQ также содержит объяснение этого поведения: Как создать многомерный список?

1
задан Scott Boston 3 April 2019 в 13:37
поделиться

1 ответ

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

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

Чуть проще:

df[[len(set(A) & set(x)) == 0 for x in df.Category]]
0
ответ дан ALollz 3 April 2019 в 13:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: