python 模糊匹配比较_使用python模糊匹配排序列与自身

我有一个20万行的数据集,有两列:1-唯一的客户id和地址组合,2-收入。该表按收入进行排序,目标是通过对第1列进行模糊匹配来清理第1列,以检查是否存在任何收入较高的客户地址组合,这些组合可用于替换收入较低的组合,而这些组合很可能是由于拼写差异造成的。在

示例:

49ad4c573fbedb0014374feab5e7fa42.png

第一行的第三个值和第一行很相似。在

我有一个工作的python代码,但它太慢了:import pandas as pd

import datetime

import time

import numpy as np

from pyxdameraulevenshtein import normalized_damerau_levenshtein_distance, normalized_damerau_levenshtein_distance_ndarray

data = pd.read_csv("CustomerMaster.csv", encoding="ISO-8859-1")

# Create lookup column from the dataframe itself:

lookup_data=data['UNIQUE_ID']

lookup_data=pd.Series.to_frame(lookup_data)

# Start iterating on row by row on lookup data to find the first closest fuzzy match and write that back into dataframe:

start = time.time()

for index,row in data.iterrows():

if index%5000==0:print(index, time.time()-start)

for index2, row2 in lookup_data.iterrows():

ratio_val=normalized_damerau_levenshtein_distance(row['UNIQUE_ID'],row2['UNIQUE_ID'])

if ratio_val<0.15:

data.set_value(index,'UPDATED_ID',row2['UNIQUE_ID'])

data.set_value(index,'Ratio_Val',ratio_val)

break

目前,这段模糊匹配的代码块运行时间太长了——前15k行大约需要8个小时,时间成倍增长,正如人们所预期的那样。关于如何更有效地编写这段代码有什么建议吗?在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值