Pands: создание фрейма данных на основе ключевых слов из словаря - PullRequest
0 голосов
/ 21 января 2019

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

Словарь выглядит так:

{'J7 2017': [' J730F', 'amoled'], 'J5 2017': ['J530', 'TFT']} 

кадр данных выглядит так:

           name  
0  SCREEN SAMSUNG FULL AMOLED  
1  SCREEN SAMSUNG J7 J730F 2017
2  WYŚWIETLACZ LCD + DIGITIZER SAMSUNG J5 2017 (J530)
3  3 colors SCREEN LCD SAMSUNG Galaxy J5 TFT
4  LG K10 K410 K420N K430

В результате я хочу сохранить имя модели [ключ] в отдельном фрейме данных со всеми строками, в которых было мое ключевое слово

так что результат будет:

dfJ72017:

         name  
0  SCREEN SAMSUNG FULL AMOLED  
1  SCREEN SAMSUNG J7 J730F 2017

dfJ52017:
             name  
    0  WYŚWIETLACZ LCD + DIGITIZER SAMSUNG J5 2017 (J530) 
    1  3 colors SCREEN LCD SAMSUNG Galaxy J5 TFT

И сделать это для всех ключей и значений в словаре.

1 Ответ

0 голосов
/ 21 января 2019

Используйте понимание слова с помощью str.contains и фильтрацию по boolean indexing, '|'.join здесь для регулярного выражения OR:

d = {'J7 2017': [' J730F', 'AMOLED'], 'J5 2017': ['J530', 'TFT']} 

dfs = {k: df[df['name'].str.contains('|'.join(v))] for k, v in d.items()}

print (dfs)

{'J7 2017':                            name
0  SCREEN SAMSUNG FULL AMOLED  
1  SCREEN SAMSUNG J7 J730F 2017, 'J5 2017':   name
2  WYŚWIETLACZ LCD + DIGITIZER SAMSUNG J5 2017 (J...
3          3 colors SCREEN LCD SAMSUNG Galaxy J5 TFT}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...