Классифицируйте pandas dataframe на основе другого, используя строку содержит - PullRequest
0 голосов
/ 11 декабря 2018

У меня есть два фрейма данных - один с необработанными данными, другой с отображением / классификатором для необработанных данных.Я хочу перебрать необработанные данные и вернуть классификации, основанные на другой.

df =

Artist  Genres  Image   Popularity  Followers       Americana   Around the World    BritRock    ... Pops    Post-Punk / Angular Progressive Psych'  Punky   Shoegazer / Dreamer Soul / Funk Soundtracks Younger Rap Younget Indie
0   0   Buke and Gase   [brooklyn indie, deep indie rock]   https://i.scdn.co/image/eece57650f99d1265f871a...   32  9328                    ...                                     
1   0   Bright Light Bright Light   [austindie] https://i.scdn.co/image/5234fdee902fe1d4d5ad20...   39  23153                   ...                                     
2   0   Angelo De Augustine [preverb, small room]   https://i.scdn.co/image/3080e9d856e639d539804b...   45  6393                    ...                                     
3   0   Modeselektor    [alternative dance, electronic, indietronica, ...   https://i.scdn.co/image/1bf7a85bcc0c047d8914a2...   50  120084                  ...                                     
4   0   Razorlight  [britpop, garage rock, indie rock, modern rock...   https://i.scdn.co/image/b743a5f809f671be6a60f7...   63  252969                  ...                                     
5 rows × 33 columns

классификатор:

spotify_genre   class_one
0   21st century classical  Peaceful Music
1   abstract    Conscious Hip-Hop
2   abstract hip hop    Conscious Hip-Hop
3   abstractro  Experimental / Noise / Drone
4   acid house  Mature Dance Head

Я хочу выполнить итерацию для df ['Genres'], где любые строки встречаются с частичным совпадением с классификатором ['spotify_genre'], тогда он должен вернуть счетчик 1 в необходимый столбец в df, как определено классификатором ['class_one']. Например, у Buke и Gase есть жанр 'brooklyn indie', который должен возвращать '1' для 'Younger Indie'в исходном столбце df.

Я пробовал множество различных способов решения проблемы, но не могу найти лучший подход.

1 Ответ

0 голосов
/ 11 декабря 2018

Я бы сделал это в 2 шага.сначала используйте dict, чтобы отобразить значения в один столбец в исходном df:

df['class'] = df['Genres'].map(dict)

, где dict - словарь в формате

dict = {'abstract': 'Conscious Hip-Hop', 'abstract hip hop': 'Conscious Hip-Hop', #...

Затем вы можете использовать pandas.get_dummies()на df['class'], чтобы получить все нужные столбцы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...