如果另一列中的相应值也是NaN,则将一列中的所有值设置为NaN

Krz*_*ski 9 python updating dataframe pandas

目标是通过将另一列中的一列中的所有值设置为NaN来维持两列之间的关系.

拥有以下数据框:

df = pd.DataFrame({'a': [np.nan, 2, np.nan, 4],'b': [11, 12 , 13, 14]})

     a   b
0  NaN  11
1    2  12
2  NaN  13
3    4  14
Run Code Online (Sandbox Code Playgroud)

从维护列的关系a,以列b,所有NaN值都在更新的结果:

     a    b
0  NaN  NaN
1    2   12
2  NaN  NaN
3    4   14
Run Code Online (Sandbox Code Playgroud)

可以实现所需行为的一种方法是:

df.b.where(~df.a.isnull(), np.nan)
Run Code Online (Sandbox Code Playgroud)

有没有其他方法来维持这种关系?

Zer*_*ero 9

你可以使用maskNaN的行.

In [366]: df.mask(df.a.isnull())
Out[366]:
     a     b
0  NaN   NaN
1  2.0  12.0
2  NaN   NaN
3  4.0  14.0
Run Code Online (Sandbox Code Playgroud)

对于,NaN使用任何跨列的 存在df.mask(df.isnull().any(1))