You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

计算DataFrame两列字符串的Levenshtein距离报错求助

解决Levenshtein距离计算中的TypeError问题

问题场景

需计算含约4000行数据的DataFrame中,"Source1"与"Source2"列字符串的Levenshtein距离,原代码运行触发如下错误:

TypeError: 'module' object is not callable

原代码片段:

#import packages
import pandas as pd
import pyodbc
import Levenshtein as lev
import numpy as np

#Read excel file
df = pd.read_excel(xxx)
df.head(10)

#define arrays
a = df.Source1.to_numpy()
b = df.Source2.to_numpy()

#calculate Levenshtein distance between two arrays
for i,k in zip(a, b):
  print(lev(i, k))

错误原因

直接调用了Levenshtein模块对象(lev(i,k)),但该模块本身不可直接调用,必须使用模块提供的distance方法执行距离计算。

修正方案

将lev(i, k)替换为lev.distance(i, k)。针对4000行数据,推荐用pandas的apply方法替代手动循环,代码更简洁高效:

修正后的代码

#import packages
import pandas as pd
import Levenshtein as lev

#Read excel file
df = pd.read_excel(xxx)

# 计算Levenshtein距离并生成新列
df['levenshtein_distance'] = df.apply(lambda row: lev.distance(row['Source1'], row['Source2']), axis=1)

# 查看结果
print(df[['Source1', 'Source2', 'levenshtein_distance']].head(10))

说明

  • apply方法可直接对DataFrame每行操作,避免手动循环的冗余代码,性能更适配批量数据
  • 新增的levenshtein_distance列会存储每行两列字符串的距离结果,便于后续分析

内容的提问来源于stack exchange,提问作者Pauli du Plooy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 01:36:25