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

Python pandas如何将DataFrame列元素替换为已知列表的最接近字符串匹配

错误原因

difflib.get_close_matches的第一个参数要求传入单个字符串,你直接传入了完整的name列Series对象,函数无法正常匹配返回空列表,空列表长度和DataFrame的行数不匹配,因此抛出ValueError。

解决方法

通过apply逐行处理name列的每一个字符串,单独为每个值匹配最接近的候选名,同时可以自定义匹配不到时的默认返回值避免报错。

完整可运行代码

import pandas as pd
import difflib

df_names = pd.read_csv('names/wrong.csv')
possible_names = ['mark', 'anthony', 'jack']

# 定义匹配函数
def match_correct_name(raw_name):
    # n=1表示只返回最相似的1个结果,cutoff为相似度阈值(0~1,值越低匹配宽松度越高)
    match_res = difflib.get_close_matches(raw_name, possible_names, n=1, cutoff=0.5)
    # 匹配成功返回结果,失败返回None或你自定义的占位符
    return match_res[0] if match_res else None

df_names['correct_name'] = df_names['name'].apply(match_correct_name)

你可以根据实际拼写错误的程度调整cutoff参数的取值,适配不同的匹配场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 07:12:04