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

Python中为DataFrame变量缺失值生成哑变量的问题求助

解决DataFrame缺失值编码问题

问题原因

你之前的代码无效的原因有两个:

  • 把缺失值当成了字符串'Nan',但DataFrame里的NaN是数值型缺失标记,不是字符串,所以== 'Nan'匹配不到任何值。
  • 直接用== Nan判断不成立:首先Nan未定义(应该用np.nan),其次NaN的特性是不等于任何值,包括自身,所以df['a'] == np.nan会返回全False,结果自然全是0。

正确实现方法

以下几种方法都能得到你需要的编码结果:

方法1:np.where结合isna()

import numpy as np
import pandas as pd

# 构造示例DataFrame
df = pd.DataFrame({'a': [3, 2, np.nan, 3, np.nan]}, index=[1,2,3,4,5])

# 生成目标列
df['df_miss_a'] = np.where(df['a'].isna(), 1, 0)

方法2:布尔值直接转整数

isna()返回布尔类型的Series(True对应缺失值,False对应非缺失值),布尔值转整数时True会自动转为1,False转为0,写法更简洁:

df['df_miss_a'] = df['a'].isna().astype(int)

方法3:map函数(可选)

用lambda函数逐个判断:

df['df_miss_a'] = df['a'].map(lambda x: 1 if pd.isna(x) else 0)

最终结果

执行后DataFrame会变成:

a  df_miss_a
1  3.0          0
2  2.0          0
3  NaN          1
4  3.0          0
5  NaN          1

内容的提问来源于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.24 23:37:14