2015-11-08 102 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