Булев поиск по двум столбцам Python - PullRequest
0 голосов
/ 21 февраля 2020

У меня есть фрейм данных all_articles со столбцами ['title', 'astract']. Я написал функцию для логического поиска по одному столбцу:

def searchString(string):
    if ((('apple' or 'banana') and ('fork' or 'knife') and ('red' or 'green'))) in string:
        return True
    return False

Теперь я хочу создать столбец, содержащий значение true, если комбинация из title или abstract выполняет требование моего логического поиска. В качестве примера предположим, что мой фрейм данных выглядит следующим образом:

title                 abstract       
'apple'               'red fork'          
'orange'              'apple red fork'          
'knife banana red'    'green bowl'         

Затем я wi sh возвращает мою функцию: ['True','True','False'].

Моя текущая команда применения выглядит следующим образом:

all_articles['boolean'] = all_articles['Abstract'].astype(str).apply(searchString)

Очевидно, я мог бы создать столбец, в котором я объединю title и abstract и применить функцию к этому столбцу. Тем не менее, мне любопытно, если есть способы сделать это с помощью функции применения, которая имеет 2 столбца ввода.

1 Ответ

0 голосов
/ 21 февраля 2020

Учитывая ваше предложение, результат должен быть [False, True, True], и вот как вы его получите:

df.stack().str.contains('(?=.*(apple|banana))(?=.*(fork|knife))(?=.*(red|green))').unstack().any(1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...