首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >熊猫使用FuzzyWuzzy

熊猫使用FuzzyWuzzy
EN

Stack Overflow用户
提问于 2021-10-19 18:05:47
回答 1查看 1.1K关注 0票数 1

我试图在我的数据中计算城市和一个静态城市名称之间的相似性。(最终,我想迭代一个dataframe,并从该数据框架中选择最佳匹配的城市名称,但我正在这个简化的场景中测试我的代码)。我使用的是fuzzywuzzy令牌设定比率。由于某种原因,它正确地计算了第一行,并且似乎为所有行分配了相同的值。

代码语言:javascript
复制
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()

结果:

代码语言:javascript
复制
        City  Score
0  Amsterdam    100
1  Amsterdam    100
2  Rotterdam    100
3     Zurich    100
4     Vienna    100

如果我一个一个地进行比较,它就会奏效:

代码语言:javascript
复制
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"))

结果:

代码语言:javascript
复制
100
67
13
13

提前谢谢你!

EN

回答 1

Stack Overflow用户

发布于 2021-10-21 13:33:38

我设法通过遍历行来解决这个问题:

代码语言:javascript
复制
for index,row in test_df.iterrows():
    test_df.loc[index, "Score"] =  fuzz.token_set_ratio("amsterdam",test_df.loc[index,"City"])

结果是:

代码语言:javascript
复制
        City Country Code  Score
0  Amsterdam           NL    100
1  Amsterdam           NL    100
2  Rotterdam           NL     67
3     Zurich           NL     13
4     Vienna           NL     13
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69635745

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档