Python: точное совпадение слов с использованием списка и фрейма данных - PullRequest
2 голосов
/ 16 апреля 2020

Привет всем :) Я надеюсь, что вы хорошо. Я новичок в python и у меня проблема с получением точного соответствия слов. У меня есть список слов key_list, и мне нужно использовать этот список для l oop через строковый фрейм данных df['response'], чтобы подсчитать, сколько раз слово из key_list появляется во фрейме данных df['response'].

В настоящее время это код, который я использую:

df['count_response']=df['response'].str.count('|'.join(key_list)) 

Это вывод, который я получаю:

key_list:  ['honestli', 'know', 'realli', 'feel', 'wast', 'time', 'school', 'good', 'reason', 'go', 'colleg', 
'howev', 'wonder', 'whether', 'continu', 'cant', 'see', 'frankli', 'care', 'less', 'understand']
              response  count_response
0          parent said             0
1     want make differ             0
2            dont know             1
3                 rich             0
4       go career want             2
5              actuari             0
6          social life             0
7       expect societi             0
8                                  0
9           help peopl             0
10   realli love learn             1
11               money             0
12       passion field             0
13  happi learn econom             0
14   want uplift peopl             0

К сожалению, это не правильный вывод , В строке 4 count_response получает значение 2; однако в key_list присутствует только слово "go". Я подозреваю, что python считает слово «забота» (что в key_list) и находится в пределах слова «карьера», но это слово не должно учитываться, поскольку мне нужно точное совпадение слов.

Спасибо за ваше время, я благодарен за любые ответы!

1 Ответ

2 голосов
/ 16 апреля 2020

Я думаю, вам нужны границы слов на \b\b:

df['count_response']=df['response'].str.count('|'.join(r"\b{}\b".format(x) for x in key_list))
...