如何将多个分类变量根据其值转换为二进制(Python)?



我正在尝试做一个分类项目,我需要使目标变量成二进制。目标变量是"质量"。所有的值都是0-10。我试图使值小于6.5 ="差",值大于6.5 ="好"。0表示"差",1表示"好"。我本打算使用。replace(),但它们是带有十进制数的浮点值,我无法仅用。replace()获得所有这些值。以及如何将其返回到数据集df.

任何类型的帮助都会很感激。谢谢你。

我曾尝试使用.replace(),否则如果值是整数就会起作用。我卡住了。

NumPy代码。将数据列表传递给NumPy数组,然后使用比较运算符创建与数据对应的布尔值数组,但是您可以将其强制转换为float32,因此True变成1.0,False变成0.0。希望能有所帮助

import numpy as np
raw_y = np.array([1.0 , 2.0, 5.2, 9.2, 4.8])
print(raw_y)
y = np.array(raw_y > 6.5, dtype=np.float32)
print(y)

输出
[1.  2.  5.2 9.2 4.8]
[0. 0. 0. 1. 0.]

如果它是numpy数组,Andrew的解决方案可以工作。
如果您使用的是可以通过重新分配来替换的pandas数据框架或CSV,下面是一个代码片段

import pandas as pd    
ddf=pd.DataFrame()    
ddf['class']=[7,6,5,4,8,7,9,3,2,1]    
ddf.loc[((ddf['class']<=6.5)),'new_class']=0  
ddf.loc[((ddf['class']>6.5)) ,'new_class']=1   

最新更新