更换数据集运行模型时出现KeyError: 'fbs'报错,是代码还是数据集问题?
报错原因判定
该KeyError: 'fbs'报错属于数据集适配问题,不存在核心代码逻辑错误。
具体根因解释
- 报错触发位置是
dummy = pd.get_dummies(df[col], prefix=col)行,本质是pandas读取的数据集DataFrame中,不存在代码需要调用的fbs列。 - 你之前使用的测试数据集包含
fbs(空腹血糖指标,是标准心血管疾病公开数据集的默认字段),所以代码可正常运行;更换后的新数据集字段结构发生变化,缺少对应字段就触发了异常。
修复方案
- 先校验当前数据集的字段结构:读取数据集后先执行
print(df.columns.tolist()),确认fbs字段是命名拼写有差异(比如大小写、别名、多了空格/下划线),还是被直接删除。 - 根据校验结果做适配:
- 如果是字段名不一致:将代码中调用的列名修改为和数据集匹配的名称即可
- 如果是新数据集确实无该字段:增加字段存在性判断逻辑,避免调用不存在的列:
# 独热编码前增加存在性判断 target_cols = ['fbs', 'cp', 'restecg'] # 替换成你需要编码的所有列名 for col in target_cols: if col not in df.columns: print(f"跳过不存在的字段:{col}") continue # 原有编码逻辑 dummy = pd.get_dummies(df[col], prefix=col) df = pd.concat([df, dummy], axis=1) df.drop(col, axis=1, inplace=True)
内容的提问来源于stack exchange,提问作者uzrsa
相关产品推荐
相关产品推荐

