在 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)不应更改。
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
我只想在满足条件时填充特定列的缺失值。
e.g. A B
Nan 0
Nan 0
0 0
Nan 1
Nan 1
.....................
.....................
在上述情况下,我只想在 B 列中的对应值为 0 时在 A 列中填充 Nan 值。A 中的其余值(带有 Nan)不应更改。
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