соответствие ключевых слов элементов списка столбцу панд - PullRequest
0 голосов
/ 12 сентября 2018

У меня есть список элементов:

 A=  ['loans','s-class','veyron','trump','rihana','drake','election']

У меня также есть другой фрейм данных pandas B со столбцами category и words, который представляет собой разделенную запятыми строку как: -

category              words
audi                  a4, a6
bugatti               veyron, chiron
mercedez              s-class, e-class
dslr                  canon, nikon
apple                 iphone,macbook,ipod
finance               sales,loans,sales price
politics              trump, election, votes
entertainment         spiderman,thor, ironmen
music                 beiber, rihana,drake
........              ..............
.........             .........

Все, что я хочу отобразить элементы списка A со столбцом words и назначить соответствующий category в новый список. Итак, ожидаемый результат будет.

matched_categories=['finance','mercedez','bugatti','politics','music','music','politics']

1 Ответ

0 голосов
/ 12 сентября 2018

Фильтр по boolean indexing с iat для выбора первого подходящего значения:

#if always matched all values
matched_categories = [df.loc[df['words'].str.contains(x), 'category'].iat[0] for x in A]
print (matched_categories)
['finance', 'mercedez', 'bugatti', 'politics', 'music', 'music', 'politics']

Более общее решение, если какое-то значение не совпадает - тогда верните not matched значение:

#added last aaa value
A = ['loans','s-class','veyron','trump','rihana','drake','election','aaa']

matched_categories = [next(iter(df.loc[df['words'].str.contains(x),'category']),'not matched')
                      for x in A]
print (matched_categories)
['finance', 'mercedez', 'bugatti', 'politics', 'music', 'music', 'politics', 'not matched']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...