我正在从成人收入数据集(< 50K和> = 50K)中转换目标列,我想要一个零为< 50K和一个1超过或等于50K。
当我运行下面的代码时,它会创建两列,当我在列中希望的内容只是&lt; 50K列出的位置替换为1并且其中列出了&gt; 50K将其替换为0 < / p>
cols_to_transform = [ 'Target' ]
df_with_dummies = pd.get_dummies(columns = cols_to_transform, data=data)
> Native Country Target_<=50K Target_>50K
>0 United-States 1 0
>1 United-States 1 0
>2 United-States 1 0
>3 United-States 1 0
>4 Cuba 1 0
关于我出错的地方以及我如何将这个分类映射到一列的任何想法,比如说'目标'?
答案 0 :(得分:2)
假设您引用此dataset,您可以使用 map 方法创建该列:
data [“Target_binary”] = data [“Target”]。map(lambda x:1 if x ==“&gt; 50K”else 0)
答案 1 :(得分:0)
将字典replace
和assign
用于新列:
dict = {'<=50K':1,'>50K':0}
dfout = df.assign(target_bin=df['target'].replace(dict)
答案 2 :(得分:0)
pd.get_dummies
应该将列拆分为原始中每个唯一值的一列。您只想将布尔列转换为整数零或一个
data['Target_binary'] = data.Target.eq('>50K').astype(int)
答案 3 :(得分:0)
假设数据框中有两个分类值“a”,“b”:
import pandas as pd
import numpy as np
data = pd.DataFrame({"Target":pd.Series(np.random.randn(5)*50000), "Value":["a","b","a","a","b"]})
cols_to_transform = ["Values"]
df_with_dummies = pd.get_dummies(columns = cols_to_transform, data=data)
然后,如果您想将“a”编码为1而将“b”编码为0,则df_with_dummies将获得以下内容:
Target Value_a Value_b
0 4329.130662 1 0
1 -64012.592710 0 1
2 -21050.741809 1 0
3 -32438.538928 1 0
4 13843.408700 0 1
其中Value_a列正是您要查找的内容。或者你也可以这样做:
data["result"] = (data["Value"]=="a").astype(int)