Как изменить только числовые переменные Python - PullRequest
1 голос
/ 25 июня 2019

Я хочу изменить только числовые переменные в моем фрейме данных, т. Е. Вычислить пропущенные значения числовых переменных по медиане и значения факторных переменных по моде. Чтобы изменить только числовые переменные, я попробовал следующее:

xTrain.select_dtypes(include=numerics) =  xTrain.select_dtypes(include=numerics).fillna(xTrain.mean(), inplace=True)

но там написано:

SyntaxError: невозможно назначить вызов функции

На самом деле, это решение просто сработало, но я не доволен им, так как оно не включает операцию присваивания ('='). Кроме того, это «частный метод» (то есть деталь реализации), и он может быть изменен или полностью удален в будущем. Было рекомендовано использовать с осторожностью ответ здесь :

xTrain._get_numeric_data().fillna(xTrain.mean(), inplace=True)

Подумал, есть ли альтернативные способы выбора только числовых столбцов и вменения их во все данные, что означает изменение только части кадра данных? Заранее спасибо!

1 Ответ

3 голосов
/ 25 июня 2019

Вы можете получить все столбцы с DataFrame.select_dtypes, так что назначьте работу хорошо:

xTrain = pd.DataFrame({'address':['a', 'b', 'c'],'b':[1,2, np.nan]})
print (xTrain)
  address    b
0       a  1.0
1       b  2.0
2       c  NaN

cols = xTrain.select_dtypes(include=np.number).columns

xTrain[cols] = xTrain[cols].fillna(xTrain.mean())
print (xTrain)
  address    b
0       a  1.0
1       b  2.0
2       c  1.5
...