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

为何pd.get_dummies返回布尔值而非0/1二进制值?

解决pd.get_dummies返回布尔值而非0/1的问题

问题原因

当传入的原始目标列本身是布尔类型时,pd.get_dummies会默认保留布尔 dtype,生成的独热编码列自然显示为True/False;另外部分旧版本的pandas也可能存在这种默认行为。

解决办法

1. 提前转换原始列类型

把布尔类型的列转成字符串或整数类型后再做独热编码:

# 转成字符串
df['column_a'] = df['column_a'].astype(str)
df['column_b'] = df['column_b'].astype(str)
df['column_c'] = df['column_c'].astype(str)
df = pd.get_dummies(df, columns=['column_a', 'column_b', 'column_c'])

# 或者直接转成整数(布尔转int会自动把True转1,False转0)
df[['column_a', 'column_b', 'column_c']] = df[['column_a', 'column_b', 'column_c']].astype(int)
df = pd.get_dummies(df, columns=['column_a', 'column_b', 'column_c'])

2. 调用pd.get_dummies时指定dtype参数

在函数中直接指定输出类型为int,无论原始列是什么类型,输出都会是0/1:

df = pd.get_dummies(df, columns=['column_a', 'column_b', 'column_c'], dtype=int)

注意:这个参数在pandas 1.5.0及以上版本支持,如果你用的是旧版本,建议升级pandas到稳定版。

3. 生成后批量转换类型

如果已经生成了布尔类型的独热列,直接对整个DataFrame做类型转换:

df = pd.get_dummies(df, columns=['column_a', 'column_b', 'column_c']).astype(int)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 08:07:37