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

Pandas使用drop()时出现KeyError:列名未在轴中找到

问题分析与解决

1. 代码失效的核心原因

你写的df.drop(all_matches[df['HomeTeam'] != df['team']])完全用错了drop()的逻辑:drop()默认是删除指定的行索引或列名,但你直接传入了布尔索引筛选后的子DataFrame,它会把这个子DataFrame的所有列名当成要删除的列,自然触发KeyError——它根本找不到这些"要删除的列"。

正确的写法是直接用布尔索引筛选保留符合条件的行:

# 保留HomeTeam与team匹配的行,可覆盖原DataFrame或存为新变量
df = df[df['HomeTeam'] == df['team']]

如果非要用drop(),得明确指定要删除的是不符合条件的行索引:

df = df.drop(df[df['HomeTeam'] != df['team']].index)

2. 错误信息里的换行符问题

错误信息中的\n不是你的列名真的带有换行符,只是Python打印长列表时自动换行的格式符号。因为列名太多,一行显示不下才拆成多行,实际你的列名都是正常的,不用处理。

额外去重思路

既然每场比赛对应两行记录,除了按HomeTeam和team匹配筛选,还可以用比赛的唯一标识(比如日期+对阵双方)做去重,逻辑更稳妥:

# 按日期、主客场队名去重,保留第一行
df = df.drop_duplicates(subset=['date', 'HomeTeam', 'AwayTeam'], keep='first')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 02:17:03