Python中如何将DataFrame字符串值映射为浮点数并解决map属性报错问题
报错原因
map() 是 pandas Series(单列数据)的专属方法,你直接对整个 DataFrame 对象 df_train 调用了该方法,因此触发属性不存在的报错。
修正方案
将映射操作的作用对象从整个 DataFrame 调整为 CentralAir 单列即可,修正后完整代码如下:
# 拆分标签列y和特征列X train_y2 = df_train.SalePrice # 定义CentralAir字段的映射规则 central_air_mapping = {'N':0, 'Y':1} # 仅对CentralAir单列执行映射操作,修复报错 df_train['CentralAir'] = df_train['CentralAir'].map(central_air_mapping) predictor_cols2 = ['CentralAir'] # 生成训练用特征数据集 train_X2 = df_train[predictor_cols2] my_model2 = RandomForestRegressor() my_model2.fit(train_X2, train_y2)
其他可选编码方式
如果后续需要处理多列离散特征,可使用更高效的批量处理方案:
- 二分类特征可直接使用
df.replace()批量映射多列取值 - 多分类特征可使用
pd.get_dummies()生成独热编码,或使用sklearn.preprocessing.OrdinalEncoder做有序编码
内容的提问来源于stack exchange,提问作者biglig
相关产品推荐
相关产品推荐

