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

如何用fuzzywuzzy清洗Pandas列中的多变体公司名称?

解决方法

步骤1:安装依赖库

先确保安装所需工具库:

pip install pandas fuzzywuzzy python-Levenshtein

步骤2:核心代码实现

以下是完整处理逻辑,核心思路是优先用最短的公司名称作为匹配标准,通过模糊匹配将变体名称统一替换:

import pandas as pd
from fuzzywuzzy import process

# 原始数据
company = ['Canopy Growth', 'Canopy Growth Chocolates', 'Canopy growTH', 'Aurora', 'Aurora Drift', 'Aurora Corp', 'Hexo Corp', 'HEXO', 'hexo Inc', 'Pure Sunfarms', 'Pure sunfarms Corp']
df = pd.DataFrame({'company': company})

# 生成候选标准名:去重后按字符长度升序排序,确保最短名称优先作为匹配目标
unique_companies = sorted(df['company'].unique(), key=lambda x: len(x))

# 定义模糊匹配函数,可调整匹配阈值(默认80,分数越高匹配越严格)
def match_standard_name(name, candidates, threshold=80):
    match, score = process.extractOne(name, candidates)
    return match if score >= threshold else name

# 应用函数生成清洗后的列
df['clean_company'] = df['company'].apply(lambda x: match_standard_name(x, unique_companies))

print(df)

代码说明

  • sorted(..., key=lambda x: len(x)):将唯一名称按长度排序,保证最短的名称被优先选为标准匹配项
  • process.extractOne:从候选列表中找出与当前名称相似度最高的结果,返回匹配项和相似度分数
  • 阈值threshold:可根据实际名称变体的差异程度调整,比如变体差异大时调低阈值,要求精准匹配时调高
  • 若匹配分数低于阈值,默认返回原名称,你也可以根据需求改为标记未匹配等处理方式

运行结果

执行后会得到你期望的清洗结果:

companyclean_company
0Canopy GrowthCanopy Growth
1Canopy Growth ChocolatesCanopy Growth
2Canopy growTHCanopy Growth
3AuroraAurora
4Aurora DriftAurora
5Aurora CorpAurora
6Hexo CorpHEXO
7HEXOHEXO
8hexo IncHEXO
9Pure SunfarmsPure Sunfarms
10Pure sunfarms CorpPure Sunfarms

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 00:30:11