对数值数据使用get_dummies



我需要从我称为'baths'的列中创建一个新变量,并且我想使它使那些具有1个bath的观察值对应于0,而那些具有1个以上的bath对应于1。在python中怎么做呢?浴场列有932行,以0.5的增量从1到5

我尝试使用pd。Get_dummies在列上,但它返回:

baths_1.0 baths_1.5 baths_2.0 baths_2.5 baths_3.0 baths_3.5 baths_4.0 baths_4.5 baths_5.0

我只想返回一列。这是新的,所以任何帮助是伟大的谢谢。

下面是我的代码:
sac = pd.read_csv('sacramento.csv')
df = pd.get_dummies(sac,columns= ['baths'])
df

数据示例:

city    zip   beds  baths   sqft    type    price   latitude
1   SACRAMENTO  z95838  2   1.0     836 Residential 59222   38.631913   
2   SACRAMENTO  z95823  3   2.0     1167Residential 68212   38.478902   
3   SACRAMENTO  z95815  2   1.0     796 Residential 68880   38.618305   
4   SACRAMENTO  z95815  2   3.0     852 Residential 69307   38.616835   
5   SACRAMENTO  z95824  2   2.0     797 Residential 81900   38.519470   

使用get_dummies将把每个唯一值转换为其自己的类别(这将产生不想要的结果)。您应该做的是选择一个阈值来将数字列转换为二进制列。

有多种方法可以做到这一点,包括DataFrame.loc,但这可以在一行中使用numpy.where或任何其他case类函数完成。

import numpy as np
df['baths_dummy'] = np.where(df['baths'] <= 1, 0, 1)

请注意:如果您在df['baths']中有NaN值,则可能需要更具体。

不需要假人。只需应用lambda fn:

df['baths'] = df['baths'].apply(lambda x: 0 if (x = 0) else 1) 

最新更新