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

如何将存储带格式True/False的Object类型列转为1和0?

问题根源

你的目标变量字符串自带前导空格和末尾的英文句号(比如' False.'),和你写的匹配规则里的纯'False'/'True'完全不匹配,这就是之前所有方法失效的原因:

  • map/replace找不到对应匹配项,会返回NaN
  • 直接astype(bool)会把任何非空字符串判定为True,最终全转成1
解决方案

先清理字符串,再转换为0/1,以下几种方法都可行:

方法1:先清理再映射

# 先去除前后空白,再去掉末尾的句号
df_new['Y_var'] = df_new['Y_var'].str.strip().str.rstrip('.')
# 再用map转换
df_new['Y_var'] = df_new['Y_var'].map({'True': 1, 'False': 0})

方法2:一步到位的替换

df_new['Y_var'] = df_new['Y_var'].str.strip().str.rstrip('.').replace(['False', 'True'], [0, 1])

方法3:直接布尔判断转整数

# 清理后判断是否等于'True',再转成整数
df_new['Y_var'] = (df_new['Y_var'].str.strip().str.rstrip('.') == 'True').astype(int)

验证结果

处理后可以用df_new['Y_var'].unique()查看,应该只会返回[0,1]两个值,确认转换成功。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 23:57:28