使用Fuzzywuzzy关键字匹配过滤数据框

时间:2019-02-26 17:44:28

标签: python-3.x pandas dataframe fuzzywuzzy

此处是Python新手。

我有一个从csv文件导入的数据框,我需要从from_data列中搜索“ Alert”和“ Amber”关键字(搜索大写,小写或这两种情况的组合)。

这是我的数据框df的内容:

  Id_No      from_data 
  1          Alert g12134 CONFIRMATION CODE A27 
  1          ALERT g12134 CONFIRMATION CODE A28
  5          g12136  CONFIRMATION CODE B01 - RED
  5          g12136  CONFIRMATION CODE B02 - AMBER
  6          g12136  CONFIRMATION CODE B01 - RED
  6          g12136  CONFIRMATION CODE B02 - AMBER
  9          Alert g12134  CONFIRMATION CODE A27
  15         **ERROR** no alert was registered
  17         g12136  CONFIRMATION CODE B02 - AMBER
  19         g12136  CONFIRMATION CODE B03 - GREEN

这是我想要的(在新数据框中):

 id_no  from_data
 1      Alert g12134  CONFIRMATION CODE A27
 1      ALERT g12134  CONFIRMATION CODE A28
 9      Alert g12134  CONFIRMATION CODE A27
 5      g12136 CONFIRMATION CODE B02 - AMBER
 15     **ERROR** no alert was registered 
 17     g12136  CONFIRMATION CODE B02 - AMBER

我整天都在网上搜索并且阅读了很多模糊的文章,但是似乎无法获得任何代码来提供想要的结果。

任何提供解决方案的帮助将不胜感激(并阻止我发疯!!)

谢谢

1 个答案:

答案 0 :(得分:2)

将布尔索引与str.contains()一起使用

df[df['from_data'].str.lower().str.contains('alert|amber')]

   Id_No                              from_data
0      1     Alert g12134 CONFIRMATION CODE A27
1      1     ALERT g12134 CONFIRMATION CODE A28
3      5  g12136  CONFIRMATION CODE B02 - AMBER
5      6  g12136  CONFIRMATION CODE B02 - AMBER
6      9    Alert g12134  CONFIRMATION CODE A27
7     15      **ERROR** no alert was registered
8     17  g12136  CONFIRMATION CODE B02 - AMBER