You need to enable JavaScript to run this app. 使用pd.get_dummies()如何保留原NA值、不生成单独NA哑变量列
优惠活动
大模型
产品
解决方案
定价
更多

使用pd.get_dummies()如何保留原NA值、不生成单独NA哑变量列

实现目标效果的操作方案

核心逻辑

  • 调用pd.get_dummies()时不要传入dummy_na=True参数,该参数的作用就是将缺失值识别为独立类别,生成专属的哑变量列,是需要规避的行为
  • 定位原数据中存在缺失值的行索引,在生成的哑变量结果中,将这些行的所有哑变量取值统一替换为缺失值,即可匹配期望的转换效果

具体操作步骤

  1. 预处理数据:将示例中存储为字符串类型的缺失标识(即"NA")替换为pandas可识别的真正空值,避免被误判为普通离散类别
# 把字符串形式的"NA"替换为pandas标准缺失值
df["someCol"] = df["someCol"].replace("NA", pd.NA)
  1. 正常生成哑变量,保持dummy_na参数为默认值False
# 生成哑变量,此时缺失值行的位置默认在所有哑变量列填充0
dummies = pd.get_dummies(df["someCol"])
  1. 对缺失行的哑变量值做替换
# 找到原数据中缺失值对应的行索引
na_row_pos = df[df["someCol"].isna()].index
# 将这些行的所有哑变量取值替换为NA
dummies.loc[na_row_pos, :] = pd.NA

结果说明

执行完成后,生成的哑变量表完全符合预期:不会单独生成someCol_NA独立列,原缺失值所在行的所有哑变量位置都会保留NA值,和你给出的表3结构完全一致。

提示:如果对多列分类变量批量执行该操作,只要把上述逻辑封装成通用函数逐列调用即可,不需要逐列手动调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.25 15:54:08