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

使用.loc访问DataFrame列触发KeyError,无.loc则出警告的问题咨询

问题分析与解决

错误原因

你遇到的KeyError是因为.loc的用法错误:
.loc的语法规则是df.loc[行标签, 列标签],如果只传入单个参数,默认是匹配行索引标签。你写win_data.loc['PTS_home']时,pandas会尝试寻找行索引为PTS_home的行,但你的数据中PTS_home是列名而非行索引,因此找不到对应行,触发KeyError。

去掉.loc后能运行但出现警告,是因为win_data是原DataFramedf的切片视图,直接赋值win_data['SMA5'] = ...时,pandas无法确定你是否要修改原数据的视图还是切片副本,因此抛出SettingWithCopyWarning。

正确解决方案

方案1:显式复制切片,避免视图问题

创建win_data时用.copy()生成独立副本,之后直接赋值就不会触发警告:

win_data = df.loc[df['HOME_TEAM_WINS'] == 1].copy()
win_data['SMA5'] = win_data['PTS_home'].rolling(5).mean()

方案2:全程用.loc规范赋值

用.loc[:, 列名]指定列,同时赋值时也用.loc明确操作原切片,既避免KeyError也消除警告:

win_data = df.loc[df['HOME_TEAM_WINS'] == 1]
win_data.loc[:, 'SMA5'] = win_data.loc[:, 'PTS_home'].rolling(5).mean()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 20:20:23