基于函数比较数据帧列和匹配相似行的最有效方法是什么?

2024-10-02 02:36:47 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我们有两个数据帧,每个数据帧包含一列类似的基于字符串的值。基于类似于Jaro Winkler的textdistance's implementation的比较函数,匹配具有类似列的行的最有效和/或最有效的方法是什么

数据帧示例:

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')

欢迎提出任何建议。先谢谢你


Tags: and数据函数dataframedfcomparisonrowfirst

热门问题