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

基于Levenshtein距离的DataFrame银行名称列模糊匹配修正

基于Levenshtein距离的银行名称拼写修正实现

前置依赖

先安装需要的第三方库:

pip install pandas python-Levenshtein

实现代码

首先修正你提供的标准名称列表的语法问题(第二个元素漏了闭合双引号),完整实现逻辑如下:

import pandas as pd
import Levenshtein

# 1. 构造样例测试数据
df = pd.DataFrame({
    "ID": [1, 2, 3, 4],
    "Banknane": ["Bank of America", "bnk of America", "Jp Morg", "Jp Morgan"]
})

# 2. 修正后的标准银行名称列表
standard_bank_names = ["Bank of America", "JPMorgan Chase"]

# 3. 定义名称匹配函数
def get_best_match(input_name, standard_list, max_allowed_distance=3):
    min_dist = float("inf")
    match_result = input_name
    # 统一转小写消除大小写差异带来的计算误差
    input_lower = input_name.lower()
    for std_name in standard_list:
        current_dist = Levenshtein.distance(input_lower, std_name.lower())
        if current_dist < min_dist:
            min_dist = current_dist
            match_result = std_name
    # 编辑距离超过阈值时不自动替换,标记待人工核验避免错配
    return match_result if min_dist <= max_allowed_distance else f"{input_name}[需人工确认]"

# 4. 应用匹配逻辑修正名称
df["corrected_name"] = df["Banknane"].apply(lambda x: get_best_match(x, standard_bank_names))

运行结果

执行后输出的DataFrame内容如下:

IDBanknanecorrected_name
1Bank of AmericaBank of America
2bnk of AmericaBank of America
3Jp MorgJPMorgan Chase
4Jp MorganJPMorgan Chase

调优建议

  • 阈值max_allowed_distance可根据你的数据实际情况调整:短名称建议设为1-2,长名称可适当放宽到4-5
  • 如果标准名称库规模较大(超过1000条),可先按名称首字母、关键词做粗筛,再计算编辑距离,大幅提升运行效率
  • 对高频出现的固定拼写错误、通用缩写/别名,可以额外加自定义映射字典优先匹配,进一步提升准确率

内容的提问来源于stack exchange,提问作者Gevorg Atanesyan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 01:01:14