У меня есть два кадра данных
df1 - столбец категорий со списком столбцов ключевых слов категории
кадр данных1
другой кадр данных со столбцом описания и извлеченными ключевыми словами из столбца описания, используя rake
Фрейм данных 2
Теперь я хочу назначить категорию для расшифровки с самыми подходящими ключевыми словами. Например, рассмотрим последнюю строку описания несмотря на то, что все ключевые слова доступны в категории 1, 2, 3, категории 7, но в категории 5 есть дополнительные ключевые слова ('i.ve Vue), следовательно, назначьте категорию этому описанию как Категория 5, поскольку она имеет наибольшее количество подходящих ключевых слов. и создайте новый столбец как назначенную категорию и заполните категорию, если категория не доступна, затем установите его в значение по умолчанию. Пожалуйста, найдите ниже Ожидаемый результат вывода
Пожалуйста, помогите мне, как я могу достичь нижеприведенного результата
Ожидаемый результат
MyCode:
import pandas as pd
A = pd.DataFrame({'keywords': [['user got trained', 'python'],
['strong knowledge', 'user', 'trained', 'python', 'java'],
['strong knowledge', 'user', 'python', 'oracle', 'java'],
['strong knowledge', 'vue', 'user', 'python', 'oracle', 'javascript', 'java']]})
print(A)
B = pd.DataFrame({'category': ['categ1', 'categ2', 'catge3', 'catge4'],
'words': ['user,python', 'user,Javascript','user,python,Java,Oracle','user,python,Java,Oracle,javascript,Vue']})
print(B)
def match_category_to_keywords(kws):
ret = []
for kw in kws:
m = B['words'].transform(lambda words: any([kw in w for w in words.split(',')]))
ret.extend(B['category'].loc[m].tolist())
return pd.np.unique(ret)
A['matched_category'] = A['keywords'].transform(lambda kws: match_category_to_keywords(kws))
print(A)