#python #python-3.x #pandas #dataframe
#python #python-3.x #pandas #фрейм данных
Вопрос:
У меня есть два фрейма данных, df1 [‘Ключевое слово’] и df2 [‘Описание’] Я пытаюсь найти каждый экземпляр строк, найденных в столбце в df1 [‘Ключевое слово’], которые появляются в df2 [‘Описание’] и возвращают совпадающие строки в соседних столбцах в df2.
Желаемый результат
df1['Keyword'] df2['Description'] df2['Match1'] df2['Match 2'] df3['Match 3']
apples apples are tasty apples
bananas apples and bananas are tasty apples bananas
oranges oranges, lemons, apples oranges lemons apples
lemons cucumber
(Я пометил столбцы совпадений здесь, но они могут быть названы как угодно).
Что я пробовал:
df2['Match'] = df2['Description'].apply(lambda x: lookup(x, df1['Keyword']))
Это помогает мне пройти большую часть пути, но оно извлекает только первое ключевое слово, которому оно соответствует в df2 [‘Description’], и помещает его в новый столбец с именем [‘Match’], тогда как мне нужно найти каждое совпадение (в идеале точное совпадение).
Спасибо за любую помощь, только начал учиться.
Ответ №1:
Вы могли бы сделать:
regex = r'|'.join(df1.Keyword)
df = pd.concat([df1, df2,
(pd.DataFrame(df2.Description
.str.findall(regex).to_list()))],
axis='columns').fillna('')
Результат:
Keyword Description 0 1 2
0 apples apples are tasty apples
1 bananas apples and bananas are tasty apples bananas
2 oranges oranges, lemons, apples oranges lemons apples
3 lemons cucumber