Итерации по списку имен, чтобы найти ключевое слово c - PullRequest
0 голосов
/ 06 мая 2020

Итак, по этому вопросу. У меня есть этот столбец:

Столбец названий продуктов Мне нужно создать функцию, которая принимает ключевое слово и возвращает все продукты с этим словом в имени. В этом конкретном вопросе ключевое слово - «Пшеница». Моя функция ниже:

def find_word(keyword):
    word = []
    for i in range(len(df)):
        if keyword in df['name'][i]:
            word.append(df['name'][i])
    return word
find_word("Wheat")

И вот что возвращается:

['Пшеничные сливки (быстрые)', 'Хрустящая пшеница и изюм', 'Замороженная мини-пшеница' , «Нутри-грейн Пшеница», «Воздушная пшеница», «Измельченная пшеница», «Измельченная пшеница и бран», «Размер ложки измельченной пшеницы», «Клубнично-фруктовая пшеница», «Пшеница Chex», «Пшеница», » Wheaties Honey Gold ']

Как видите, последние 2, а также предпоследний не принадлежат друг другу. Не знаю, как структурировать функцию для поиска таких случаев.

Ответы [ 2 ]

0 голосов
/ 06 мая 2020

Попробуйте это.

df[df["name"].str.contains(r'(?:\s|^)Wheat(?:\s|$)')]["name"]
0 голосов
/ 06 мая 2020

Я думаю, что то, что вы ищете, может быть достигнуто с помощью следующего модуля re :

import re

def find_word(keyword):
    word = []

    # create a regular expression pattern that would "exactly" match the keyword
    # \b represents Word boundary
    p = re.compile(r'\b{}\b'.format(keyword))

    for i in range(len(df)):
        # use the pattern to search the name
        if p.search(df['name'][i]):
            word.append(df['name'][i])
    return word

find_word("Wheat")
['Cream of Wheat (Quick)', 'Crispy Wheat & Raisins', 'Frosted Mini-Wheat', 
 'Nutri-grain Wheat', 'Puffed Wheat', 'Shredded Wheat', 
 "Shredded Wheat'n'Bran", 'Shredded Wheat spoon size', 'Wheat Chex']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...