对数据帧中两列之间的相似性进行评分

2024-04-28 12:19:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个大约47列的数据框。在这些列中,我只需要比较其中的两列。我试图做的是对行的两列之间的相似性进行评分,并在新列中返回该评分。问:它们是相同的还是接近相同的。我并没有试图搜索数据集以寻找更好的匹配。只需按现状为这一行打分。我正在使用Fuzzy-Wuzzy包,但是我的代码不断地抛出一个错误。我使用的代码是:

import pandas as pd
from fuzzywuzzy import fuzz

df['score'] = df.apply(fuzz.token_sort_ratio(df['FullAddress_x'].astype(str), df['FullAddress_y'].astype(str)))

我得到的错误是:

TypeError: ("'int' object is not callable", 'occurred at index LineID_x')

我不想考虑行ID,也不能删除它,因为需要链接到原始数据集。我只希望考虑指定的列。我不确定我做错了什么。我也没有被困在必须使用这个软件包。我对别人开放。我只是不知道还有谁会这样做

例如: 如果我匹配123大街和123大街。我希望我的结果是

Col 1, Col 2, Score

123 Main St., 123 Main Street, 95

stack上的其他类似问题无助于解决这一问题。任何帮助都会很好。如果需要进一步澄清,请务必告诉我。提前感谢您抽出时间

编辑1:

Example Data Set:

LineID.1_x,FullAddress_x,LineID.1_y,FullAddress_y 0,123 main st,540,123 main street 1,258 green st,541,258 green st 2,324 blue st,542,324 purple rd 3,345 red st,543,345 red st 4,349 orange st,544,3456 airport rd

请注意,示例数据集要小得多。数据集还将包含日期、邮政编码和我不想考虑的各种其他形式。我希望这有帮助

编辑2: 还按照某人的建议尝试了以下代码,但也导致了一个错误。该建议已被用户删除

df['score'] = df[['FullAddress_x', 'FullAddress_y']].apply(fuzz.token_sort_ratio(df['FullAddress_x'].astype(str), df['FullAddress_y'].astype(str)))

导致错误的原因:

TypeError: ("'int' object is not callable", 'occurred at index FullAddress_x')


Tags: 数据代码importtokendf错误sort评分