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

Python实现CSV球队名称模糊匹配时全为TRUE的问题排查

问题排查与修复方案

核心问题分析

你的脚本返回全TRUE是由多个逻辑错误和变量问题导致的:

  • 参数与变量混乱:函数is_similarity_above_threshold参数冗余,且循环变量name与函数参数name重名,直接覆盖了目标匹配名称;同时调用函数时使用了未定义的second_team_names变量。
  • 逻辑倒置:原函数错误地遍历了未定义集合,而非遍历参考球队名称逐一计算相似度。
  • 集合传入错误:将unique_team_names集合直接传给fuzz.partial_ratio时,集合会被转为字符串(如"{'manchester united', ...}"),这种字符串与任意球队名称计算相似度时,极易误判为高匹配度,导致全TRUE。

修复后的代码

import pandas as pd
from fuzzywuzzy import fuzz

# 文件路径
reference_file_path = r'C:\Users\pes TEAM DEF\PES TEAM 2021 A.csv'
second_file_path = r'C:\Users\pes TEAM DEF\PES TEAM 2022 A.csv'

# 读取CSV文件
df_reference = pd.read_csv(reference_file_path)
df_second = pd.read_csv(second_file_path)

# 提取参考球队名称(转为小写+列表,方便遍历匹配)
unique_team_names = df_reference['2021Name'].str.lower().tolist()

# 修正匹配逻辑:检查当前名称是否与任意参考名称的部分相似度超过阈值
def is_similar(name, reference_names, threshold):
    return any(fuzz.partial_ratio(name, ref_name) > threshold for ref_name in reference_names)

# 生成匹配结果列
df_second['PartialMatch'] = df_second['2022Name'].str.lower().apply(
    lambda x: is_similar(x, unique_team_names, 70)
)

# 输出结果文件
output_path = "C:/Users/Downloads/pes TEAM DEF/output/abcd.csv" 
df_second.to_csv(output_path, index=False, encoding='utf-8-sig')

关键修复点

  1. 简化函数逻辑,移除冗余参数,确保遍历参考名称列表逐一计算相似度。
  2. 将集合转为列表,避免集合转字符串导致的错误匹配。
  3. 修复未定义变量问题,传入正确的参考名称列表。
  4. 修正变量重名问题,避免目标匹配名称被覆盖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 21:35:27