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

如何将房价数值列转为二分类变量?解决loc赋值全为0的问题

问题原因与解决方案

你的代码问题在于:sac.loc[sac["price"]> 200000]= 1会把满足条件的整行所有列都设置为1,这会导致这些行的price列也被改成1。之后执行sac.loc[sac["price"]<= 200000]= 0时,所有行的price要么原本就<=200000,要么已经被改成1(自然<=200000),所以所有行都被设为0。

以下是几种正确的实现方式:

  • 布尔值转整数法(最简洁)
    利用Pandas中布尔值True等价于1、False等价于0的特性,直接转换:

    sac['Y'] = (sac['price'] > 200000).astype(int)
    
  • 列指定赋值法
    先初始化新列,再通过loc指定列进行赋值,避免修改原price列:

    # 先给Y列全部设为0
    sac['Y'] = 0
    # 仅对price>200000的行,将Y列设为1
    sac.loc[sac['price'] > 200000, 'Y'] = 1
    
  • numpy.where函数法
    使用numpy的条件判断函数,一行完成赋值:

    import numpy as np
    sac['Y'] = np.where(sac['price'] > 200000, 1, 0)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 01:55:20