pandas 将Jaro-Winkler距离应用于两个 Dataframe

0mkxixxg  于 2022-12-02  发布在  其他
关注(0)|答案(1)|浏览(129)

我有两个长度不等的 Dataframe ,想比较df 2和df 1中字符串的相似度。是否可以通过map/lambda函数应用Jaro-Winkler距离方法计算两个 Dataframe 上的字符串相似度。

df1
Behavioral disorders
Behçet disease
AV-Block

df2
Behavioral disorder
Behçet syndrome

所需的输出为:

name_left                 name_right            score   
Behavioral disorders      Behavioral disorder   0.933333
Behçet disease            Behçet syndrome       0.865342

以上分数均为假设,如有任何帮助,敬请谅解

efzxgjgh

efzxgjgh1#

假设您需要最高得分,并且输入中的原始列是“name”:

# pip install jaro-winkler
# https://pypi.org/project/jaro-winkler/
from jaro import jaro_winkler_metric as jw

pd.DataFrame([[n2, *max([(n1, jw(n1, n2)) for n1 in df1['name']],
                        lambda x: x[1])]
              for n2 in df2['name']],
              index=df2.index,
              columns=['name_right', 'name_left', 'score']
            )[['name_left', 'name_right', 'score']]

相关问题