我拥有的数据集是手动填充的地址
我要找的城市是“斯坦布尔”。它有一个土耳其字符,我也遇到了一些编码问题。例如,lower()'ingİinİstanbul不会返回我可以用正则表达式模式中的常规'I'拾取的字符
因此,除其他原因外,我改变了模糊字符串搜索的方法。我想为我的模糊查找算法提供引用字符串:'/ist'和'İstanbul'-这些是要在我的地址列中查找的引用值
包含我想要捕捉的短语的行的示例:
...İSYTANBUL...
...isanbul...
...Istanbul...
...İ/STANBUL...
...,STANBUL/ÜSKÜDAR...
isatanbul
iatanbul
İSTRANBUL
isytanbul
/isanbul
这些都是完整地址,所以我发现部分_比率与比率相比工作得更好
我的目标是在行级别使用fuzzywuzzy.partial_ratio和字符串'伊斯坦布尔'或'/ist。并使用score partial_ratio返回值为该行索引的首选列(在代码中被引用为'istanbul mu'
)获取True或False
我开发的代码如下所示,但每次运行时它都会停在大约25k行。而且速度非常慢。你认为有更有效的方法来完成这项任务吗
def fuzzy(string, df, columnname):
fullrange = len(df[columnname])
for i in range(fullrange):
if fuzz.partial_ratio(string, df[columnname][i]) > 70:
df.loc[df.index == i, 'istanbul mu'] = True
else:
df.loc[df.index == i, 'istanbul mu'] = False
这种方法做得更好。使用.process可能会获得更好的结果,但仅供参考:
作为您自己答案的快速替代,您可以用RapidFuzz替换FuzzyWuzzy,它具有更快的
fuzz.partial_ratio
实现相关问题 更多 >
编程相关推荐