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

如何将Levenshtein方法计算结果作为列添加至现有DataFrame?

解决方案

问题原因

你当前的代码中,lev_distance_a_b变量在循环里会被每次迭代的结果覆盖,最终只保留最后一次计算的距离值,所以赋值给DataFrame列时整行都填充这个最后值。

方法一:用列表收集所有计算结果

先初始化一个空列表,在循环中把每对元素的Levenshtein距离添加到列表,最后将整个列表赋值给新列:

# 初始化空列表存储所有距离
lev_distances = []
a = df.a.to_numpy()
b = df.b.to_numpy()

for i, k in zip(a, b):
    dist = lev.distance(i, k)
    lev_distances.append(dist)

# 将列表赋值给DataFrame的新列
df['a_b'] = lev_distances
print(df)

方法二:使用Pandas的apply方法(更简洁高效)

直接对DataFrame的每行应用Levenshtein距离计算,避免手动循环,适合处理4000行的数据集:

# 定义计算函数
def calculate_lev(row):
    return lev.distance(row['a'], row['b'])

# 应用到每行,生成新列
df['a_b'] = df.apply(calculate_lev, axis=1)
print(df)

也可以用lambda表达式简化写法:

df['a_b'] = df.apply(lambda row: lev.distance(row['a'], row['b']), axis=1)

这样处理后,a_b列会正确对应每行的Levenshtein距离值,不会出现全列都是最后一个结果的问题。

内容的提问来源于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 05:03:21