在Pandas中调用RapidFuzz字符串匹配结果与直接调用不一致是什么原因
问题根本原因
你在为Address Similarity 2列赋值时,调用str(test_anui['Processed Client Address'])、str(test_anui['Processed Aruvio Address'])转换的是Pandas Series对象的结构化字符串表示,而非Series中存储的原始地址文本。
直接打印str(test_anui['Processed Client Address'])可以看到,输出包含索引、列名、数据类型等额外信息,和你定义的address_a原始值完全不同,所以计算得到的相似度和直接传入原始字符串的结果不一致。
正确实现方式
分两种场景适配:
- 单条数据测试场景(你的测试用例仅1行数据):直接取Series的第一个元素计算即可
test_anui['Address Similarity 2'] = fuzz.token_sort_ratio( test_anui['Processed Client Address'].iloc[0], test_anui['Processed Aruvio Address'].iloc[0] )
- 批量处理多行数据场景:通过
apply逐行读取对应字段计算相似度
test_anui['Address Similarity 2'] = test_anui.apply( lambda row: fuzz.token_sort_ratio(row['Processed Client Address'], row['Processed Aruvio Address']), axis=1 )
内容的提问来源于stack exchange,提问作者Filippo Sebastio
相关产品推荐
相关产品推荐

