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

2024-04-27 00:43:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我在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')时,出现了一个错误:

The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().


Tags: 函数testdatatrainvariablesamountlocknn
1条回答
网友
1楼 · 发布于 2024-04-27 00:43:07

库需要一个始终为真且始终为真的值。对于您的函数,您不能保证总是返回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]

相关问题 更多 >