我有一个由两列字符串组成的pandas DataFrame。我想创建第三列,其中包含两列的“编辑距离”。

from nltk.metrics import edit_distance
df['edit'] = edit_distance(df['column1'], df['column2'])

由于某种原因,这似乎进入了某种无限循环,从某种意义上来说,它在相当长的时间内仍然没有响应,然后我不得不手动终止它。

欢迎任何建议。

最佳答案

nltk的edit_distance函数用于比较字符串对。如果要计算对应的字符串对之间的编辑距离,请使用apply将其分别编码到每一行的字符串,如下所示:

results = df.apply(lambda x: edit_distance(x["column1"], x["column2"]), axis=1)

或类似这样(可能会更有效率),以避免包括数据框的无关列:
results = df.loc[:, ["column1", "column2"]].apply(lambda x: edit_distance(*x), axis=1)

要将结果添加到数据框,请按以下方式使用它:
df["distance"] = df.loc[:, ["column1","column2"]].apply(lambda x: edit_distance(*x), axis=1)

10-08 08:18
查看更多