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

基于另一DataFrame列修正DataFrame列值的Python问题

解决方案:模糊匹配修正拼写错误

merge是精确匹配,无法处理拼写错误、大小写差异或部分匹配的场景,所以得用模糊字符串匹配来实现需求。这里推荐用fuzzywuzzy库(基于Levenshtein距离计算字符串相似度),具体步骤如下:

1. 安装依赖库

如果还没安装fuzzywuzzy,先执行:

pip install fuzzywuzzy python-Levenshtein

python-Levenshtein是可选依赖,能提升匹配速度。

2. 具体实现代码

import pandas as pd
from fuzzywuzzy import process

# 原始数据
df1 = pd.DataFrame({'col1': ['apple', 'banana', 'cherry', 'apple', 'cherry']})
df2 = pd.DataFrame({'col1': ['app Banana', 'Cherry', 'banana', 'apple', 'bnapple', 'apple ch']})

# 提取df1中的唯一正确名称(去重后作为匹配候选)
valid_names = df1['col1'].unique().tolist()

# 定义匹配函数:对每个输入字符串,返回候选列表中相似度最高的名称
def match_correct_name(s):
    # process.extractOne返回(匹配到的名称, 相似度得分),取第一个元素
    return process.extractOne(s, valid_names)[0]

# 应用函数修正df2的col1
df2['col1'] = df2['col1'].apply(match_correct_name)

print(df2)

3. 结果验证

运行后输出的df2与预期一致:

col1
0   banana
1   cherry
2   banana
3    apple
4    apple
5    apple

补充说明

  • 如果需要调整匹配严格程度,可在process.extractOne中添加score_cutoff参数,比如score_cutoff=80,只有相似度≥80的才会匹配,否则返回None(需额外处理)。
  • fuzzywuzzy默认忽略大小写差异,无需额外转换字符串格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 23:42:32