pandas 查找DataFrame列中字符串之间的相似性

jpfvwuh4  于 2023-04-04  发布在  其他
关注(0)|答案(1)|浏览(174)

对于要分组为一组的客户端,我有类似的名称,例如:
| 一种集管|
| --------------|
| schwabstsoct2022|
| 施瓦布茨|
| schwabregionaloct2022|
| Schwabregional2|
| Flagstar-2022|
| Flagstar-2021|
有些有一个字符,我可以用来分隔字符串,然后分类它,但有些没有,所以有一个行之间的相似性得分,我可以用来快速分类它,并有另一列的输出。
谢谢!

camsedfj

camsedfj1#

我希望我理解了你的问题。要查找相似度得分,您可以使用difflib内置模块:

from difflib import SequenceMatcher

def similar(a, b):
    return SequenceMatcher(None, a, b).ratio()

for s1 in df['A header']:
    df[s1] = [similar(s1, s2) for s2 in df['A header']]

print(df)

图纸:

A header  schwabstsoct2022  schwabsts  schwabregionaloct2022  schwabregional2  flagstar-2022  flagstar-2021
0       schwabstsoct2022          1.000000   0.720000               0.702703         0.516129       0.482759       0.413793
1              schwabsts          0.720000   1.000000               0.466667         0.500000       0.272727       0.272727
2  schwabregionaloct2022          0.702703   0.466667               1.000000         0.833333       0.352941       0.294118
3        schwabregional2          0.516129   0.500000               0.833333         1.000000       0.142857       0.142857
4          flagstar-2022          0.482759   0.272727               0.411765         0.285714       1.000000       0.923077
5          flagstar-2021          0.413793   0.272727               0.352941         0.285714       0.923077       1.000000

相关问题