大规模Pandas地址数据匹配优化及异常问题咨询
大规模地址数据集的高效匹配方案与疑问
问题背景
我拥有两个Pandas DataFrame:test_df和golden_df,二者均包含邮政地址。其中test_df是经Google API修正格式化后的用户输入数据(原始数据存在缺失街道/邮编、格式错误等问题)。现在需要基于golden_df,找出test_df中存在的地址及不存在的地址。我的数据集规模可达15万行,最初用for循环遍历查找的方法可行但效率极低,想知道针对大规模数据的最优实现方案,核心目标是获取匹配正确的地址数量。
示例数据
test_df代码示例
data = ["941 Thorpe St, Rock Springs, WY 82901", "2809 Harris Dr, Antioch, CA 94509", "7 Eucalyptus, Newport Coast, CA 92657", "725 Mountain View St, Altadena, CA 91001", "1966 Clinton Ave, Calexico, CA 92231", "431 6th St, West Sacramento, CA 95605", "5574 Old Goodrich Rd, Clarence, NY 14031", "Valencia Way, Valley Center, CA 92082"] test_df = pd.DataFrame(data, columns=['parsed addresses'])
golden_df代码示例
data = ["941 Thorpe St, Rock Springs, WY 82901", "2809 Harris Dr, Antioch, CA 94509", "8838 La Jolla Scenic Dr N, La Jolla, CA 92037", "16404 Parthenia St North Hills, CA 91343", "1966 Clinton Ave, Calexico, CA 92231", "431 6th St, West Sacramento, CA 95605", "1010 Hillcroft Rd, Glendale, CA 91207", "Valencia Way, Valley Center, CA 92082"] golden_df = pd.DataFrame(data, columns=['golden addresses'])
初始低效实现
我最初编写的代码如下,通过for循环逐行查找,效率极低:
for i in range(0, len(test_df)): each_add = test_df.at[i,"parsed addresses"] golden_df['golden addresses'].str.contains(each_add)
优化尝试与疑问
我尝试用以下代码计算交集:
data_intersection = golden_df.loc[golden_df["golden addresses"].isin(test_df["parsed addresses"]),"golden addresses"]
发现len(data_intersection) > test_df.shape[0],为什么计算两个DataFrame的交集时会出现这种情况?
另外,我尝试将地址转为集合,发现len(set(golden_df['golden addresses']))与golden_df.shape[0]数值不等,请问这是什么原因?
内容的提问来源于stack exchange,提问作者Saania
相关产品推荐
相关产品推荐

