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

基于相似字符串匹配获取Dataframe单元格值出现IndexError如何解决

错误原因

你使用的是完全相等匹配规则,而DataFrame中曼城对应的队名字段是Manchester C.,和你输入的Manchester City内容不一致,导致筛选结果为空DataFrame,此时调用iloc[0]访问不存在的第一行数据,就会触发越界报错。

解决方案

方案1:简单子串匹配(无需额外依赖)

如果目标字符串和数据集内的字段存在公共子串,可以用str.contains()做模糊包含匹配:

hometeam = 'Manchester City'
# 提取公共子串做匹配,或者直接用目标字符串的前缀匹配
filtered = df[df['Teams'].str.contains('Manchester C')]
if not filtered.empty:
    pts_man_city = filtered.iloc[0]['Pts']
else:
    print("未找到对应球队")

方案2:相似度匹配(适配更复杂的拼写差异场景)

如果存在拼写缩写、漏字等更复杂的差异,可以用编辑距离计算相似度,取匹配度最高的结果,需要用到fuzzywuzzy库:

  1. 先安装依赖:
    pip install fuzzywuzzy python-Levenshtein
  2. 代码实现:
from fuzzywuzzy import process

hometeam = 'Manchester City'
# 从球队列表中匹配相似度最高的结果,返回格式为(匹配字符串, 相似度分数, 索引)
best_match = process.extractOne(hometeam, df['Teams'].tolist())
# 设置相似度阈值,避免匹配到完全不相关的内容
if best_match[1] >= 80:
    pts_man_city = df[df['Teams'] == best_match[0]].iloc[0]['Pts']
    print(pts_man_city) # 输出结果为32
else:
    print("未找到匹配度足够的球队")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 14:45:00