【发布时间】:2020-08-13 07:58:48
【问题描述】:
我有两个数据框。 DF_Address,有 347k 不同的地址和 DF_Project,有 24k 记录有
Project_Id、Project_Start_Date 和 Project_Address
我想检查我的 Project_Address 在 Df_Address 中是否存在模糊匹配。如果有匹配项,我想提取相同的 Project_ID 和 Project_Start_Date。下面是我正在尝试的代码
import pandas as pd
import numpy as np
from fuzzywuzzy import fuzz
from fuzzywuzzy import process
Df_Address = pd.read_csv("Cantractor_Addresses.csv")
Df_Project = pd.read_csv("Project_info.csv")
#address = list(Df_Project["Project_Address"])
def fuzzy_match(x, choices, cutoff):
print(x)
return process.extractOne(
x, choices=choices, score_cutoff=cutoff
)
Matched = Df_Address ["Address"].apply(
fuzzy_match,
args=(
Df_Project ["Project_Address"],
80
)
)
这段代码确实提供了元组形式的输出
('matched_string', score)
但它也给出了类似的字符串。我也需要提取
Project_Id 和 Project_Start_Date
。有人可以帮助我使用并行处理来实现这一点,因为数据量很大。
【问题讨论】:
标签: pandas parallel-processing multiprocessing apply fuzzywuzzy