运行Python Pandas中Standard Scaler相关代码报错如何排查解决
Pandas 搭配 StandardScaler 标准化报错修复方案
报错根因定位
结合代码和报错信息,按出现优先级排序,问题点如下:
- 多列选取语法错误
代码中选取多列的写法df["age", "income", "score"]不符合Pandas语法规则,选取多列时必须传入列名构成的列表,即需要使用两层方括号,错误写法会直接触发KeyError。 - 待处理列存在非数值内容
StandardScaler仅支持数值型输入,如果目标列混入字符串、特殊符号等非数值内容,会触发浮点转换失败的ValueError。 - 数据集存在缺失值
目标列包含NaN/空值时,StandardScaler计算均值、标准差的逻辑会直接中断报错。
修复步骤
- 先修正列选取语法,同时提前做数据类型转换和缺失值处理,再执行标准化:
import pandas as pd from sklearn.preprocessing import StandardScaler df = pd.read_csv("data.csv") scaler = StandardScaler() # 统一声明要处理的目标列,避免重复写列名出错 target_columns = ["age", "income", "score"] # 把目标列强制转为数值类型,无法转换的非法内容标记为缺失值 df[target_columns] = df[target_columns].apply(pd.to_numeric, errors="coerce") # 用对应列的均值填充缺失值,也可以根据业务场景换成中位数、0等填充值 df[target_columns] = df[target_columns].fillna(df[target_columns].mean()) # 执行标准化并赋值回原DataFrame df[target_columns] = scaler.fit_transform(df[target_columns])
- 如果是旧版本Pandas/sklearn,赋值时出现维度不匹配报错,可以把标准化结果先转为numpy数组再赋值:
df[target_columns] = scaler.fit_transform(df[target_columns].values)
验证方法
执行完代码后运行print(df[target_columns].describe()),如果输出的每列均值接近0、标准差接近1,说明标准化执行成功。
内容的提问来源于stack exchange,提问作者mikail gökçe
相关产品推荐
相关产品推荐

