首页 > 解决方案 > 对数值数据使用 get_dummies

问题描述

我需要从我称为“浴”的列中创建一个新变量,并且我想让它使观察到 1 个浴的人对应于值 0,而那些观察到 1 个浴以上的人对应于 1 .我将如何在 python 中做到这一点?浴列有 932 行,范围从 1 到 5,增量为 0.5

我尝试在列上使用 pd.get_dummies 但它返回:

卫浴_1.0 卫浴_1.5 卫浴_2.0 卫浴_2.5 卫浴_3.0 卫浴_3.5 卫浴_4.0 卫浴_4.5 卫浴_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   

标签: pythondataframe

解决方案


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

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

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

请注意:如果您NaNdf['baths'].


推荐阅读