Панды Исин основаны на одном ряду - PullRequest
0 голосов
/ 09 октября 2018

Теперь у меня есть:

ss    dd    list
A     B     [B,E,F]
C     E     [C,H,E]
A     C     [A,D,E]

Я хочу исключить строки, которые и ss и dd находятся в списке.Поэтому мы исключаем строку 2. Функция isin () проверяет, присутствуют ли ss и dd во всех строках списка каждый раз, что не дает мне результата.

Пожалуйста, не используйте цикл, потому что мой набор данных слишком велик,Вывод должен быть:

ss    dd    list
A     B     [B,E,F]
A     C     [A,D,E]

1 Ответ

0 голосов
/ 09 октября 2018

Сначала мы сглаживаем ваш столбец list на фрейме данных и используем isin (здесь index имеет значение, поэтому я использовал оригинальный фрейм данных index для создания cdf)

cdf=pd.DataFrame(df['list'].tolist(),index=df.index)
mask=(cdf.isin(df.ss).any(1))&(cdf.isin(df.dd).any(1))
df[~mask]
Out[589]: 
  ss dd       list
0  A  B  [B, E, F]
2  A  C  [A, D, E]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...