在python中填充少量缺失值

时间:2017-11-03 09:41:59

标签: python pandas missing-data

我希望仅在满足条件时才填充特定列的缺失值。

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

在上面的例子中,我想在B列中的相应值为0时填充A列中的Nan值.A(带Nan)中的其余值不应该改变。

3 个答案:

答案 0 :(得分:1)

mask使用fillna

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

locnumpy.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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

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

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