【发布时间】:2020-10-01 14:57:48
【问题描述】:
我的问题是我有一个包含 cmets 的向量和另一个包含我试图在 cmets 中找到的名称的向量。我的方法是使用fuzzywuzzy,并在第一步中为每个名称分配它为相应评论获得的分数。这样我就可以在进一步的步骤中说出哪些评论中可能提到了哪些名字
例如,数据可能如下所示:
# in the original data both would be DFs with more than 1 column
names = pd.DataFrame(["Anna Starkow", "Marian Mueller", "James Leo Arneau"))
# spelling mistakes and abbreviations
Comments=pd.DataFrame(["Ana Starkov was super good!", "M. mueller is in great shape", "I like Arneau and Starkow's work","Thanks Anna Starkov, credits to JL Arneau"])
# my approach:
# This is also from stack
N = len(Comments.index)
M = len(names.index)
res= pd.DataFrame([[0] * M]*N)
#My code
DF=pd.concat([Comments.reset_index(drop=True), res],axis=1)
for x in range(len(Comments.index)):
for i in range(len(names.index)):
DF[x, i+1]=fuzz.token_set_ratio(DF.Comments[x],names.names[i])
但是,它一直运行并且没有返回结果。
我希望这样的事情会回来:
# Comments Anna Starkow Marian Mueller ....
# Ana Starkov was super good! 80 0 ....
# M. mueller is in great shape 0 70 ....
# .... .... .... ....
有没有更有效的方法来做到这一点?
我希望我的代码没有错误,因为我必须从不允许我使用 Stack 的另一台机器上键入它。
【问题讨论】:
标签: python for-loop fuzzywuzzy fuzzy-comparison