【问题标题】:Fuzzy Matching - returning the best potential value of a test string模糊匹配 - 返回测试字符串的最佳潜在值
【发布时间】:2018-03-30 12:32:26
【问题描述】:

我正在尝试使用模糊匹配来捕捉对验证集的响应列表。

我正在使用以下代码:

for x in rawDatabase.Status:
        choice = process.extractOne(x, my_list)
        print('choice ',choice)

rawDatabase 数据框中的 Status 列是我要验证的列。 my_list 是要捕捉到的 Status 列中条目的标准化值列表。

使用上面的代码,我得到以下示例输出:

choice  ('TRANSFER IN FROM GOVERNMENT DEPARTMENT', 100, 39)
choice  ('TRANSFER OUT TO GOVERNMENT DEPARTMENT', 100, 40)
choice  ('CURRENT', 100, 1)
choice  ('LEAVER - RETIRED', 100, 12)
choice  ('CURRENT', 100, 1)

有没有一种方法可以返回最适合正在测试的字符串的值并使用更新后的值更新 rawDatabase 状态列?所以例如我会被退回

choice = 'TRANSFER IN FROM GOVERNMENT DEPARTMENT'
choice = 'TRANSFER OUT TO GOVERNMENT DEPARTMENT'
choice = 'CURRENT'
choice = 'LEAVER - RETIRED'
choice = 'CURRENT'

【问题讨论】:

标签: python pandas


【解决方案1】:

修改你的代码

l1=[]
for x in rawDatabase.Status:
        choice = process.extractOne(x, my_list)[0]
        l1.append(choice)
rawDatabase['choice']=l1

更多示例:

from fuzzywuzzy import fuzz
from fuzzywuzzy import process
a=[]
for x in df.response:
    a.append([process.extract(x, val.validate, limit=1)][0][0][0])
df['response2']=a
df

Out[867]: 
   id  colour response response2
0   1    blue   curent   current
1   2     red  loaning      loan
2   3  yellow  current   current
3   4   green     loan      loan
4   5     red  currret   current
5   6   green     loan      loan

输入数据:

df:

id colour  response
 1   blue    curent 
 2    red   loaning
 3 yellow   current
 4  green      loan 
 5    red   currret
 6  green      loan

数值:

validate
 current
    loan
transfer

【讨论】:

  • @MaxU 谢谢老兄~ :)
猜你喜欢
  • 2016-08-17
  • 2020-10-12
  • 2017-08-02
  • 2014-08-02
  • 2012-02-14
  • 2014-11-02
  • 1970-01-01
  • 2018-05-31
  • 2021-04-19
相关资源
最近更新 更多