如何加快缓慢的模糊匹配循环?

时间:2019-06-18 16:49:26

标签: python-3.x pandas

我正在创建一个脚本,该脚本遍历Pandas数据库中的电子邮件列表,并将结果写入新的数据框。现在的问题是,脚本运行太慢。我知道模糊匹配自然会有些慢,但是我也认为,如果我可以消除这里的一些循环,可以通过一次写入所有新数据来加快速度,而不是一次通过一行时间。

我尝试弄乱append函数,以便使其立即编写所有内容,而不是逐行慢慢进行。我认为lambda函数在这里可能会有所帮助,但我不确定。

#edit rows here
rows = 1000
#edit rows here
sampleDonors = donors.sample(n=rows)
matches = pd.DataFrame()
for email in sampleDonors['PersonEmail']:
    if email not in ['NONE', 'NA', 'N/A']:
        letter = sampleDonors.loc[sampleDonors['PersonEmail'] == email, 'LastName'][:1].str.get(0)
        constituentIDA = sampleDonors.loc[sampleDonors['PersonEmail'] == email, 'PersonID'][:1]
        letter = letter.tolist()[0]
        if letter.isalpha() == True:
            donorStr = locals()['Donors{}'.format(letter)]
            someAddress = (donorStr['PersonEmail'])
            yo = process.extract(email, someAddress, scorer=fuzz.ratio, limit = 10)
            yo = [list(elem) for elem in yo]
            for i in yo:
                constituentIDB = donorStr.loc[donorStr['PersonEmail'] == i[0], 'PersonID'][:1]
                add = [email, constituentIDA.item(), constituentIDB.item()]
                i.extend(add)
            matches = matches.append(yo, ignore_index= True)

我得到了想要的最终结果,但是要花一些时间才能达到目标。 10000行大约需要5个小时。

0 个答案:

没有答案