隔离列表中包含单词的每个列

时间:2017-07-27 20:21:52

标签: python python-3.x pandas dataframe

我有一个单词列表['light','medium','heavy'],我试图隔离多个数据框中可能出现这些单词的列。数据框:

df1
1 |   2    |   3   |    4    | 5 | REF    
   'light'  'medium' 'heavy'       2c17
     26        42       15         2c17
     32        52       19         2c17
     24        37.9     10         2c17

df2
1 |   2    |   3   |    4    | 5 | REF    
               21       23         2c16
             'medium' 'heavy'      2c16
               52       19         2c16
               37.9     10         2c16
df3
  1     |   2    |   3   |    4    | 5 | REF
'light'                                  3c16  
  21                                     3c16
  22                                     3c16
  23                                     3c16

基本上,如果列包含列表中的单词,则将它们隔离。期望的输出:

df1
      2    |   3   |    4   | REF    
   'light'  'medium' 'heavy'  2c17
     26        42       15    2c17
     32        52       19    2c17
     24        37.9     10    2c17
df2
            |   3   |    4     | REF    
               21       23       2c16
             'medium' 'heavy'    2c16
               52       19       2c16
               37.9     10       2c16
df3
  1      |    REF
'light'       3c16  
  21          3c16
  22          3c16
  23          3c16

我的代码到目前为止,其中sh1是数据帧列表:

listofnewdf = []
for num in range(len(sh1)):
    for i in range(len(sh1[num].columns)):
        if pd.Series.any(sh1[num].iloc[:,i].str.contains(pat="light|medium|heavy")):
   listofnewdf.append(pd.DataFrame({sh1[num].columns[i]:sh1[num].iloc[:,i],sh1[num]})

但是,这会为每个关键字生成单独的数据帧。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

您可以将 univ date ms ms_perc_rank 0 A 11/01/2007 0.2 0.22 1 A 11/02/2007 0.3 0.22 2 B 11/01/2007 0.4 0.42 3 B 11/01/2007 0.5 0.42 与布尔索引一起使用:

df.isin