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

使用OneHotEncoder时将NaN值映射到哑变量的简便方法

解决OneHotEncoder哑变量同步原缺失值的问题

快速修复批量赋值报错

你之前的批量赋值代码报错,是因为把整个df_experience_level DataFrame传给了loc的列参数,而这里需要一维的列名列表。用这条单语句就能实现批量同步缺失值:

df.loc[df['experience_level'].isna(), df_experience_level.columns] = np.nan

更高效的预处理方式

如果不想后续再合并到原DataFrame修改,也可以在生成哑变量DataFrame时直接处理:

oh = OneHotEncoder(min_frequency=0.0001, sparse_output=False)
data = oh.fit_transform(df[['experience_level']])
cols = oh.get_feature_names_out()
df_experience_level = pd.DataFrame(data, columns=cols)

# 直接定位原变量缺失的行,将所有哑变量设为NaN
df_experience_level.loc[df['experience_level'].isna(), :] = np.nan

替代方案:用pandas.get_dummies简化流程

如果不需要sklearn OneHotEncoder的特殊配置,用pandas的get_dummies可以更简洁地完成需求:

# 生成包含缺失值类别的哑变量
df_experience_level = pd.get_dummies(df['experience_level'], prefix='experience_level', dummy_na=True)
# 将原缺失值行的非nan类别哑变量设为NaN
df_experience_level.loc[df['experience_level'].isna(), df_experience_level.columns.drop('experience_level_nan')] = np.nan

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 01:30:02