熊猫与模糊匹配

时间:2016-01-08 21:55:14

标签: pandas fuzzywuzzy

目前我有两个数据框。我试图使用fuzzywuzzy的process.extractOne函数进行客户名称的模糊匹配。当我在示例数据上运行以下脚本时,我得到了良好的结果并且没有错误,但是当我在当前数据帧上运行以下操作时,我得到属性和类型错误。出于安全原因,我无法提供数据,但如果有人能够根据提供的脚本弄清楚我为什么会收到错误,那么我将非常感激。

names2 = list(dftr3['Common Name'])
names3 = dict(zip(names2,names2))
def get_fuzz_match(row):
            match = process.extractOne(row['CLIENT_NAME'],choices = n3.keys(),score_cutoff = 80)
            if match:
                return n3[match[0]]
            return np.nan    
 dfmi4['Match Name'] = dfmi4.apply(get_fuzz_match, axis=1)

我知道没有一些示例会使解决问题变得更加困难,因此我将回答任何问题并编辑帖子以帮助完成此过程。具体错误是:

1.AttributeError:'dict_keys'对象没有属性'items'

2.TypeError:期望的字符串或缓冲区

1 个答案:

答案 0 :(得分:1)

我认为,AttributeError很简单,而且可以预料到。 Fuzzywuzzy的process.extract函数执行process.extractOne中的大部分实际工作,使用try:... except:子句来确定是将choices参数处理为dict-like还是list-like 。我认为您正在看到异常,因为在except:子句期间引发了TypeError。

TypeError更难以确定,但我怀疑它出现在StringProcessor类的某个地方,在processor模块中使用,再次由extract调用,它使用了几个字符串方法并没有捕获例外。因此,您的apply调用似乎正在传递非字符串的内容。你有可能有空单元吗?

相关问题