Как проверить наличие похожих элементов (могут быть не одинаковыми и разной длины) между списком и серией - PullRequest
0 голосов
/ 24 октября 2019

У меня есть фрейм данных и список следующим образом:

# Set up df
series1 = pd.Series(['orange','apple pie', 'freshly imported pear','grapes','dragonfruit','exotic mango'])
series2 = pd.Series([1,2,3,4,5,6])
df = pd.DataFrame({'Product': series1, 'ID': series2})

# Set up list
lst = ['local pear','orange juice' , 'made from real grapes', 'apple', 'pineapple pen', 'banana mama']

Я хочу создать новый столбец в фрейме данных, который показывает, есть ли в списке каждый продукт в фрейме данных (да или нет),Это «Да», если есть какое-либо совпадение подстрок.

Мой желаемый результат:

output = pd.DataFrame({'Product': series1, 'ID': series2, 'Matched': pd.Series(['yes','yes','yes','no','no','no'])})

Я пробовал:

for v in lst:
    for u in df['Product']:
        if u in v or v in u:
            df['Matched'] = 'yes'
        else:
            df['Matched'] = 'no'

Проблема в том, что результат перезаписывается для каждой итерации цикла, и я не знаю, как это исправить. Поскольку элементы имеют разную длину, писать «у» в «v» или «v в u» - это мой способ обойти это, но это кажется неправильным. Пожалуйста, помогите

...