提问人:Gogo 提问时间:10/27/2023 最后编辑:halferGogo 更新时间:10/30/2023 访问量:59
在 Pandas 中检查字符串相似性需要很长时间
Check string similarities in Pandas takes a very long time
问:
我想修改我的代码,使其运行得更快。我以前从未使用过发电机,也不知道怎么做。
我修改了我的代码,但仍然没有进展:
def shortest_word_version(my_list):
similar_words_concat=[]
for i in my_list:
similarity_ratio=(SequenceMatcher(a= w[0], b=i[0] ).ratio() for w in my_list)
high_similarity_indices=(i for i,v in enumerate(similarity_ratio) if v >= .7)
similar_words = min(((''.join(my_list[j]) for j in high_similarity_indices)), key=len)
similar_words_concat.append(similar_words)
return similar_words_concat
我想检查列表中的所有字符串,对相似的字符串进行分组,并将它们全部替换为最短的对应字符串。
ex. ['adjust' , 'adjustment' , 'pear', 'lemon' , 'commitment', 'commit']
应该返回
['adjust' , 'adjust' , 'pear', 'lemon' , 'commit', 'commit']
当列表相当短时,我的代码可以正常工作,但是当我的方法的参数是具有 7000+ 个元素的 Pandas 列时,它需要很长时间并且永远无法看到结果。
如何更改我的代码以确保它及时运行更大的列表?
from difflib import SequenceMatcher
l1=['adjust' , 'adjustment' , 'pear', 'lemon' , 'commitment', 'commit']
def shortest_word_version(my_list):
similar_words_concat=[]
for i in my_list:
similarity_ratio=[SequenceMatcher(a= w[0], b=i[0] ).ratio() for w in my_list]
high_similarity_indices=[i for i,v in enumerate(similarity_ratio) if v >= .7]
similar_words = min(([''.join(my_list[j]) for j in high_similarity_indices]), key=len)
similar_words_concat.append(similar_words)
return(similar_words_concat)
print(shortest_word_version(l1)) # prints correct result
答: 暂无答案
评论