我正在尝试计算两个Pandas列之间的Levenshtein距离,但我卡住了。这是我使用的库。这是一个最小化、可复制的示例:
import pandas as pd
from textdistance import levenshtein
attempts = [['passw0rd', 'pasw0rd'],
['passwrd', 'psword'],
['psw0rd', 'passwor']]
df=pd.DataFrame(attempts, columns=['password', 'attempt'])
password attempt
0 passw0rd pasw0rd
1 passwrd psword
2 psw0rd passwor
My poor attempt:
df.apply(lambda x: levenshtein.distance(*zip(x['password'] + x['attempt'])), axis=1)
这就是函数的工作方式。它将两个字符串作为参数:
levenshtein.distance('helloworld', 'heloworl')
Out[1]: 2
apply
时,每一行都作为Series
返回给您的lambda
函数中的x
。为什么要压缩它们?只需将它们作为x['password']
等传递即可。 - anishtain4