0

全部,

我的数据中有 np.nans 和 np.infs。我想用 0 替换这些,但是当我执行以下操作时,我收到以下错误:

imputer = SimpleImputer(missing_values=np.nan, strategy='constant', fill_value=0)
features_to_impute = data_fe.columns.tolist()

data_fe[features_to_impute] = pd.DataFrame(imputer.fit_transform(data_fe[features_to_impute]), 
                                           columns=features_to_impute)


ValueError: Input contains infinity or a value too large for dtype('float64').

不知道如何处理这个问题,有没有人知道我可以如何解决这个问题并同时估算 infs?

4

1 回答 1

0

如果你想同时替换np.nanand np.inf0只需使用np.nan_to_num

例子:

a = np.array([[1, 2, np.nan, 5],
              [-np.inf, 9,3,np.nan],
              [8, np.inf, np.nan,9]])

Out[441]:
array([[  1.,   2.,  nan,   5.],
       [-inf,   9.,   3.,  nan],
       [  8.,  inf,  nan,   9.]])

b = np.nan_to_num(a, nan=0, posinf=0, neginf=0)

Out[444]:
array([[1., 2., 0., 5.],
       [0., 9., 3., 0.],
       [8., 0., 0., 9.]])

因此,在您的情况下,只需将选定的数据框列传递给np.nan_to_num

np.nan_to_num(data_fe[features_to_impute], nan=0, posinf=0, neginf=0)
于 2020-10-09T09:42:21.427 回答