Показать записи содержат несколько ключевых слов, используя OR или if elif (фильтровать строки) - PullRequest
0 голосов
/ 08 марта 2020

Я пытаюсь показать строки, содержащие набор ключевых слов.

Таблица выглядит следующим образом

Col0     col1      col2     col3
1         LD        AN       CC
2         AB      LD SS      BB
1         AA      LD AD      CC
3         LD        AC       NN
2         FF        UH       BB

Мне нужно отфильтровать эту таблицу, где строка содержит буксировочные струны (LD и AB) ИЛИ (LD и AD) ИЛИ (A C)

Итак, я получаю этот результат

Col0     col1      col2     col3
2         AB      LD SS      BB
1         AA      LD AD      CC
3         LD        AC       NN

Я пытался

count = df.groupby(['Col0','Col3'])['Col3'].transform('size')
s = df['Col1'] + ' ---- ' + df['Col2'] 

#The condition function 
df = df[count.isin([1,2]) (s.str.contains('LD') & s.str.contains('AB')) | (s.str.contains('LD') & s.str.contains('AD')) | (s.str.contains('LD') & s.str.contains('AC'))]

Это явно не сработало, поэтому я попытался использовать функцию if:

if s.str.contains('L/D') & s.str.contains('AB'):
   df = df[count.eq(2)]
elif s.str.contains('L/D') & s.str.contains('AD'):
    df = df[count.eq(2)]
elif s.str.contains('L/D') & s.str.contains('AC'):
    df = df[count.eq(2)]

и использовать это

if 'L/D' & 'AB' in s:
    df = df[count.eq(2)]
elif 'L/D' & 'AD' in s:
    df = df[count.eq(2)]
elif 'L/D' & 'AC' in s:
    df = df[count.eq(2)]

Они не работали

Так что можно кто-нибудь помогите с тем, что я сделал не так

1 Ответ

1 голос
/ 08 марта 2020

Эта строка:

df = df[count.isin([1,2]) (s.str.contains('LD') & s.str.contains('AB'))
        | (s.str.contains('LD') & s.str.contains('AD'))
        | (s.str.contains('LD') & s.str.contains('AC'))]

содержит синтаксическую ошибку из-за count. Удалите его, и вы получите ожидаемый результат:

df = df[(s.str.contains('LD') & s.str.contains('AB'))
        | (s.str.contains('LD') & s.str.contains('AD'))
        | (s.str.contains('LD') & s.str.contains('AC'))]

давая:

   Col0 Col1   Col2 Col3
1     2   AB  LD SS   BB
2     1   AA  LD AD   CC
3     3   LD     AC   NN
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...