在 python 中填写一些缺失值

Fill few missing values in python

我只想在满足条件时填充特定列的缺失值。

e.g. A    B
     Nan  0
     Nan  0
     0    0
     Nan  1
     Nan  1
     .....................
     .....................

在上述情况下,我只想在 B 列中的对应值为 0 时在 A 列中填充 Nan 值。A 中的其余值(带有 Nan)不应更改。

使用mask with fillna:

df['A'] = df['A'].mask(df['B'] == 0, df['A'].fillna(3))

loc, numpy.where 的备选方案:

df.loc[df['B'] == 0, 'A'] = df['A'].fillna(3)

df['A'] = np.where(df['B'] == 0, df['A'].fillna(3), df['A'])

print (df)
     A  B
0  3.0  0
1  3.0  0
2  0.0  0
3  NaN  1
4  NaN  1

您应该对所有元素使用循环,如下所示:

for i in range(len(A))
   if numpy.isnan(A[i]) && B[i] == 0:
      A[i] = value

有更好的方法来实现这些循环,但我不知道你使用的是什么结构。

np.where 是快速简单的解决方案。

In [47]: df['A'] = np.where(np.isnan(df['A']) & df['B'] == 0, 3, df['A'])
In [48]: df
Out[48]: 
     A  B
0  3.0  0
1  3.0  0
2  3.0  0
3  NaN  1
4  NaN  1