如何用pd.get_dummies生成0/1而非布尔值?泰坦尼克数据集问题
解决pd.get_dummies生成布尔值而非0/1的问题
问题原因
pd.get_dummies处理字符串类型的分类列时,默认生成布尔类型(bool)的结果。虽然True等价于1、False等价于0,但如果需要显式的整数类型0/1,或者只想保留单列,可参考以下几种方法:
方法1:生成单列并转整数
在get_dummies中添加drop_first=True删除冗余列,再用astype(int)将布尔值转为0和1:
male = pd.get_dummies(training_set['Sex'], drop_first=True).astype(int)
执行后会得到仅含male的单列,值为1(男性)和0(女性)的整数类型。
方法2:直接映射(二分类场景更高效)
如果仅需将Sex列转为0/1的单列,无需使用get_dummies,直接用字典映射更直观:
training_set['Sex'] = training_set['Sex'].map({'male': 1, 'female': 0})
该方法一步到位,直接在原列生成0/1的整数结果。
方法3:已生成布尔列时转整数
如果已经得到两列布尔结果,只需转为0/1类型,直接对结果使用astype(int)即可:
male = pd.get_dummies(training_set['Sex']).astype(int)
注意此方法会保留female和male两列,若仅需单列优先选择方法1。
内容的提问来源于stack exchange,提问作者SH_IQ
相关产品推荐
相关产品推荐

