pandas使用.loc选取DataFrame单行触发KeyError如何解决

报错原因
df.loc[]是按行索引标签匹配查找的,报这个KeyError只有一个核心原因:Adam Henrique不在你当前表的行索引里。从截图可以看到,你现在的DataFrame用的是pandas默认生成的0开头整数序号当索引,球员名字是单独一列的内容,根本不是索引标签,自然查找失败。
解决方法
两种方案选一个适配自己的使用场景即可:
- 不修改原有索引结构,直接按列值筛选
先确认存储球员姓名的列名(比如列名为player),用布尔索引直接过滤目标行:
如果想要和# 将player替换为你表里实际存储球员姓名的列名 df[df['player'] == 'Adam Henrique']loc取单行一致的Series返回结果,在语句末尾加.squeeze()即可。 - 将姓名列设为行索引,适配你原来的写法
如果后续需要频繁按球员姓名取数,直接把姓名列设置为索引,之后就可以正常用loc按名字取值:# 将player替换为你表里实际存储球员姓名的列名 df = df.set_index('player') # 执行完设置后,原语句df.loc["Adam Henrique"]可以正常运行
避坑提醒
如果按上面操作后仍然报相同的KeyError,优先检查姓名字符串是否带看不见的前后空格(数据导入时很容易出现这类问题),可以先做一次字符串清洗再操作:
df['player'] = df['player'].str.strip()
内容的提问来源于stack exchange,提问作者dbacks867
相关产品推荐
相关产品推荐

