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

pd.get_dummies()默认输出布尔值而非0/1的原因及相关疑问

Pandas get_dummies 布尔值/0-1输出问题解答

问题背景

先将DataFrame的分类列转为category类型后,调用pd.get_dummies(df, columns=categorical_cols),实际输出为True/False布尔值,而非预期的0/1二进制值;添加dtype=int参数可转为0/1。针对这个场景,解答以下三个疑问:


1. 为何pd.get_dummies()默认输出布尔值而非0/1?

当输入列是category类型时,Pandas默认用布尔类型输出是出于内存优化的考虑:布尔值在内存中仅占1字节,比常规int类型(通常4字节)更节省空间。同时从语义上看,True/False直接对应“是否属于该分类”,逻辑表达更直观。Pandas针对category类型的输入做了专门的存储优化,所以默认输出布尔值。

2. 是Pandas新版本更新导致还是操作有误?

这是Pandas版本更新带来的行为变化,大概在1.5.0版本左右调整了这个默认逻辑:早期版本中get_dummies不管输入列类型,默认输出int类型的0/1;后续版本为了优化内存,针对category类型的输入默认输出布尔值。你的操作本身没有错误,只是新旧版本的行为差异导致预期不符。

3. 是否应始终使用dtype=int?

不需要始终添加dtype=int,按需选择即可:

  • 如果后续要做数值计算或机器学习建模(部分模型对布尔类型的支持不佳),建议添加dtype=int确保输出0/1数值;
  • 如果只是做数据筛选、统计分析或可视化,布尔类型足够用且更省内存,没必要强制转换。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 04:00:54