Замена пустых значений во фрейме данных Pandas серией - PullRequest
0 голосов
/ 09 июня 2018

Я создал функцию для замены отсутствующих значений на knn в Python, вот моя функция:

def missing_variables_knn(x):
    test = data[data[x].isnull()]
    train = data[data[x].isnull()==False] 
    X_train = train.loc[:, ['ApplicantIncome', 'CoapplicantIncome', 'LoanAmount', 'Loan_Amount_Term']]
    Y_train = train[x]
    X_test = test.loc[:, ['ApplicantIncome', 'CoapplicantIncome', 'LoanAmount', 'Loan_Amount_Term']]
    knn = KNeighborsClassifier(n_neighbors=3)
    knn.fit(X_train, Y_train)
    pred = knn.predict(X_test)
    pred = pd.Series(pred)
    data[x].fillna(pred)

Когда я использовал missing_variables_knn('Gender'), я получил ошибку:

Истинная ценность Серии неоднозначна.Используйте a.empty, a.bool (), a.item (), a.any () или a.all ().

1 Ответ

0 голосов
/ 09 июня 2018

Библиотеке нужно значение, которое всегда истинно и всегда.С вашей функцией вы не гарантируете, что всегда будете возвращать true.Вот почему панды интерпретируют это как неоднозначное.

Что вы должны сделать, это использовать другие функции, такие как .filter ().Здесь есть соответствующий пост: https://stackoverflow.com/questions/36921951/truth-value-of-a-series-is-ambiguous-use-a-empty-a-bool-a-item-a-any- o / 36922103

Самое безопасное, что ошибка здесь: train = data [data [x] .isnull () == False]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...