Найти фразы, хранящиеся в кадре данных, в предложениях, найденных в другом кадре данных - PullRequest
0 голосов
/ 29 августа 2018

при условии, что у меня есть 2 кадра данных:

sub = pd.DataFrame(['Little Red', 'Grow Your', 'James Bond', 'Tom Brady'])
text = pd.DataFrame(['Little Red Corvette must Grow Your ego', 'Grow Your Beans', 'James Dean and his Little Red coat', 'I love pasta'])

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

Я хочу, чтобы вывод текстового фрейма данных был:

Text                                    | Subjects
Little Red Corvette must Grow Your ego  | Little Red, Grow Your
Grow Your Beans                         | Grow Your
James Dean and his Little Red coat      | Little Red
I love pasta                            | NaN

Есть идеи, как мне этого добиться? Я смотрел на этот вопрос: Проверьте, появляются ли слова в одном кадре данных в другом (python 3, pandas) но это не совсем как мой желаемый результат. Thankyou

1 Ответ

0 голосов
/ 29 августа 2018

Используйте str.findall с объединением всех значений sub на | с границей регулярных выражений:

pat = '|'.join(r"\b{}\b".format(x) for x in sub[0])
text['new'] = text[0].str.findall(pat).str.join(', ')
print (text)
                                        0                    new
0  Little Red Corvette must Grow Your ego  Little Red, Grow Your
1                         Grow Your Beans              Grow Your
2      James Dean and his Little Red coat             Little Red
3                            I love pasta                       

Если хотите NaN для несоответствующих значений, используйте loc:

pat = '|'.join(r"\b{}\b".format(x) for x in sub[0])
lists = text[0].str.findall(pat)
m = lists.astype(bool)
text.loc[m, 'new'] = lists.loc[m].str.join(',')
print (text)
                                        0                   new
0  Little Red Corvette must Grow Your ego  Little Red,Grow Your
1                         Grow Your Beans             Grow Your
2      James Dean and his Little Red coat            Little Red
3                            I love pasta                   NaN
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...