【问题标题】:Replacing null values in Pandas data frame with a series用一系列替换 Pandas 数据框中的空值
【发布时间】:2018-06-09 13:38:24
【问题描述】:

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

Series 的真值是模棱两可的。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    库需要一个始终为真且始终为真的值。使用您的函数,您不能保证您将始终返回 true。这就是为什么 pandas 将其解释为模棱两可的原因。

    你应该做的是使用其他函数,比如.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]

    【讨论】:

      猜你喜欢
      • 2022-01-24
      • 2018-09-29
      • 1970-01-01
      • 2021-01-19
      • 1970-01-01
      • 2017-03-23
      • 1970-01-01
      • 1970-01-01
      • 2021-09-02
      相关资源
      最近更新 更多