首页 > 解决方案 > 与 Dataframe 列进行比较并根据函数匹配相似行的最有效方法是什么?

问题描述

假设我们有两个 Dataframe,每个 Dataframe 都包含一列有点相似的基于字符串的值。基于比较函数(如textdistance 的Jaro-Winkler 实现),将行与相似列匹配的最有效和/或最有效的方法是什么?

示例数据框:

first_df = pd.DataFrame( ['Cars and cats', 'Spaceship', 'Captain Marvel', 'Dune','Bucks in 6'], columns=['Title'])

second_df = pd.DataFrame( ['Captain Harlock', 'Cats and dogs', 'Buccuneers', 'Dune buggy','Milwaukee Bucks'], columns=['Title'])

我在想的是:

执行:

comparison_df = first_df.merge(second_df, how='cross')

comparison_df['similarity_score'] = comparison_df.apply(lambda row: textdistance.jaro_winkler.normalized_similarity(row['First DataFrame Titles'], row['Second DataFrame Titles']), axis=1)
display(comparison_df)

comparison_df = comparison_df.sort_values('similarity_score', ascending=False).drop_duplicates(subset=['First DataFrame Titles'], keep='first')

欢迎任何建议。先感谢您。

标签: pythonpandasdataframeperformance

解决方案


推荐阅读