Pands:根据字典中的关键字创建数据框

时间:2019-01-21 15:04:21

标签: python pandas data-science

我有一本字典,其中的键是型号名称,值是关键字。我想过滤字符串包含字典值中的关键字之一的列中的每一行。 匹配应该不区分大小写。

字典看起来像这样:

{'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

结果,我希望将模型名称[key]存储在单独的数据框中,并且所有行都带有我的关键字

所以输出将是:

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 :(得分:0)

将dict理解与str.contains一起使用并按boolean indexing进行过滤,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}

<router-outlet></router-outlet>