我需要从我称为'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)