我试图在我的数据中计算城市和一个静态城市名称之间的相似性。(最终,我想迭代一个dataframe,并从该数据框架中选择最佳匹配的城市名称,但我正在这个简化的场景中测试我的代码)。我使用的是fuzzywuzzy令牌设定比率。由于某种原因,它正确地计算了第一行,并且似乎为所有行分配了相同的值。
码
from fuzzywuzzy import fuzz
test_df= pd.DataFrame( {"City" : ["Amsterdam","Amsterdam","Rotterdam","Zurich","Vienna","Prague"]})
test_df = test_df.assign(Score = lambda d: fuzz.token_set_ratio("amsterdam",test_df["City"]))
print (test_df.shape)
test_df.head()结果:
City Score
0 Amsterdam 100
1 Amsterdam 100
2 Rotterdam 100
3 Zurich 100
4 Vienna 100如果我一个一个地进行比较,它就会奏效:
print (fuzz.token_set_ratio("amsterdam","Amsterdam"))
print (fuzz.token_set_ratio("amsterdam","Rotterdam"))
print (fuzz.token_set_ratio("amsterdam","Zurich"))
print (fuzz.token_set_ratio("amsterdam","Vienna"))结果:
100
67
13
13提前谢谢你!
发布于 2021-10-21 13:33:38
我设法通过遍历行来解决这个问题:
for index,row in test_df.iterrows():
test_df.loc[index, "Score"] = fuzz.token_set_ratio("amsterdam",test_df.loc[index,"City"])结果是:
City Country Code Score
0 Amsterdam NL 100
1 Amsterdam NL 100
2 Rotterdam NL 67
3 Zurich NL 13
4 Vienna NL 13https://stackoverflow.com/questions/69635745
复制相似问题