python - 对数值数据使用 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
解决方案
使用get_dummies
会将每个唯一值转换为自己的类别(这将产生不需要的结果)。您应该做的是选择一个阈值以将数字列转换为二进制列。
有多种方法可以做到这一点,包括DataFrame.loc
,但这可以在一行中使用numpy.where
或任何其他case
类似函数来完成。
import numpy as np
df['baths_dummy'] = np.where(df['baths'] <= 1, 0, 1)
请注意:如果您NaN
在df['baths']
.
推荐阅读
- python - 如何为 Python repl 着色
- ios - NativeScript Vue:FormattedString 和 Label 截断 IPHONE 上的字符串
- java - 如何按包含非英文字符的字段按字母顺序对 ArrayList 进行排序?爪哇
- javascript - 未捕获的类型错误:无法读取 null 的属性“nodeName”
- powershell - 为给定的 IP 和 PORT 找到正确的 Internet 协议
- django - 如何检查在 django admin 中是否打开了实例详细信息
- python - TypeError:'dict'对象在python纸牌游戏中不可调用修复
- java - 告诉 Spring 不要对特定类型的 bean 调用关闭
- javascript - 这个 Javascript 符号 { e => e } 表示/可能表示什么?
- java - 我们可以并行处理每个多管道步骤吗?