用系列替换Pandas数据框中的空值

时间:2018-06-09 13:38:24

标签: python pandas

我创建了一个用Python中的knn替换缺失值的函数,以下是我的函数:

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 :(得分:1)

库需要一个始终为true的值。使用您的功能,您不能保证始终返回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]