PANDAS найти точную заданную строку / слово из столбца - PullRequest
0 голосов
/ 17 июня 2020

Итак, у меня есть pandas имя столбца Примечания , которое содержит предложение или объяснение некоторого события. Я пытаюсь найти некоторые заданные слова из этого столбца, и когда я нахожу это слово, я добавляю его в следующий столбец как Тип

Проблема заключается в некотором конкретном c слове, например Лжец , Ложь его подбирают такие слова, как знакомые и семьи , потому что у них обоих есть лжец и ложь в них.

Notes                                  Type
2 families are living in the address   Lies
He is a liar                           Liar
We are not familiar with this          Liar

Как видно сверху, правильным является только второе предложение. Как мне подобрать только отдельные слова, такие как «лжец», «ложь», а не «семья» или «фамильяр».

Это был мой подход,

word= ["Lies"]

for i in range(0, len(df)):
    for f in word:
        if f in df["Notes"][i]:
            df["Type"][i] = "Lies"

Благодарю за любую помощь. Спасибо

Ответы [ 3 ]

1 голос
/ 17 июня 2020

Используйте \b для границы слова в regex и .str.extract, чтобы найти шаблон:

 df.Notes.str.extract(r'\b(lies|liar)\b')

Чтобы пометить строки, содержащие это слово, выполните:

df['Type'] = np.where(df.Notes.str.contains(r'\b(lies|liar)\b'), 'Lies', 'Not Lies')
0 голосов
/ 17 июня 2020

Думаю, эта штука, если код тебе подойдет!

import pandas as pd

df = pd.DataFrame.from_dict({"Notes":["2 families are living in the address"  ,
"He is a liar  "              ,           
"We are not familiar with this "   ]  }) 



word= ["liar","are","this"]
found_in_whole_string =[]

for i in range(0, len(df)):
    found_one_word=[]
    for f in word:
        if f in df["Notes"][i].split(" "):
            found_one_word.append(f)
        else:
            found_one_word.append("")
    found_in_whole_string.append(",".join([word for word in found_one_word if len(word) > 0])  )

df["type"] = found_in_whole_string
0 голосов
/ 17 июня 2020

Что ж, я согласен с ответом Куанг Хоанга. Пожалуйста, убедитесь, что вы знаете о предложениях типа «Он не лжец». Где он все еще будет соответствовать и даст вам Лжеца.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...