【问题标题】:How to replace missing values in a column with ndarray/model prediction如何用 ndarray/模型预测替换列中的缺失值
【发布时间】:2023-03-12 18:34:01
【问题描述】:

我想使用模型预测(比如说RandomForestRegression)来替换数据框Age 列中的缺失值。我检查了模型预测的数据类型是numpy.ndarray

这是我的工作:

a = RandomForestRegressor()
a.fit(train_data, target)
result = a.predict(test_data)
df[df.Age.isna()].Age.iloc[:] = result

但它不起作用,也无法替换nan 值。请问为什么?

我看到有些人使用相同的方法,但它们有效。

【问题讨论】:

  • 试试df.loc[df['Age'].isna(), 'Age'] = result.values。如果这不起作用,那么您的result 值与df['Age'] 中的空值的形状不同。这意味着你的逻辑不清楚。
  • 我使用了df.loc[df['Age'].isna(), 'Age'] = result,它成功了。请问你为什么用result.values?由于 的谓词值应该是数组而不是字典。非常感谢!
  • result.valuesdict 无关。它只是使用pd.Series.values 来使用 NumPy 数组进行赋值。如果以下答案解决了您的问题,请接受(左侧绿色勾号),以便其他用户知道。

标签: python pandas indexing scikit-learn


【解决方案1】:

不要使用链式索引。在文档中是explicitly discouraged。您可能看到的不一致可能与文档中所述的副本与视图差异有关。

改为使用单个 pd.DataFrame.loc 调用:

df.loc[df['Age'].isna(), 'Age'] = result

另见Indexing and Selecting Data

【讨论】:

    猜你喜欢
    • 2017-01-12
    • 2021-11-23
    • 1970-01-01
    • 2019-02-18
    • 1970-01-01
    • 2023-01-13
    • 2019-08-28
    • 2017-07-19
    • 2021-08-03
    相关资源
    最近更新 更多