2015-11-08 80 views
0

相关数据框:http://archive.ics.uci.edu/ml/machine-learning-databases/adult/adult.data大熊猫映射函数返回“男”

我手动添加一个“性”列到数据帧,而我试图用0来代替“男”和“女”与然而1似乎没有工作。我只是得到'NaN'值而不是那些和零。

相关代码:

df['sex'] = df['sex'].map({'Male': 0, 'Female': 1}) 

它似乎并没有具体到“性”列,因为这不工作之一:

df['success'] = df['success'].map({'<=50K': 0, '>50k':1}) 

有什么想法?

+0

也许那是因为你的列不包含' 'Male''和'' Female''为字符串。在你做映射之前,你可以编辑你的问题来包含'df [“sex”]。head()。values'的结果吗? – DSM

回答

2

@ayhan是正确的,空白是造成这个问题。更正确的解决方案可能是添加skipinitialspace默认设置为False,因为您使用read_csv读取数据。

df = pd.read_csv(io.StringIO(data), delimiter=',', skipinitialspace=True, header=None) 
df[9] = df[9].map({'Male': 0, 'Female': 1}) 

不能给我们(第9栏是 “性别” 一栏):

0     1  2   3 4     5 \ 
0 39   State-gov 77516 Bachelors 13  Never-married 
1 50 Self-emp-not-inc 83311 Bachelors 13 Married-civ-spouse 
2 38   Private 215646 HS-grad 9   Divorced 

        6    7  8 9  10 11 12    13 \ 
0  Adm-clerical Not-in-family White 0 2174 0 40 United-States 
1 Exec-managerial  Husband White 0  0 0 13 United-States 
2 Handlers-cleaners Not-in-family White 0  0 0 40 United-States 

     14 
0 <=50K 
1 <=50K 
2 <=50K