如何将房价数值列转为二分类变量?解决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'] = 1numpy.where函数法
使用numpy的条件判断函数,一行完成赋值:import numpy as np sac['Y'] = np.where(sac['price'] > 200000, 1, 0)
内容的提问来源于stack exchange,提问作者Jesus Bueno
相关产品推荐
相关产品推荐

