2015-11-08 3 views
0

Соответствующие DataFrame «NaN»: http://archive.ics.uci.edu/ml/machine-learning-databases/adult/adult.dataпанды карта функция, возвращающая

Я вручную добавил колонку «секс» на DataFrame, и я пытаюсь заменить «мужской» с 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 
Смежные вопросы