首页 > 解决方案 > 根据另一列的值更改相邻列的值

问题描述

我有以下数据框:

    A1  A2  B1  B2
 0  10  20  20   NA
 1  20  40  30   No
 2  50  No  50   10
 3  40  NA  50   20

每当 A2 列中的对应值为 No 或 NA 时,我想将 A1 列中的值更改为 NaN。B1 也一样。
注意:这里的 NA 是一个字符串对象,而不是 NaN。

     A1  A2  B1   B2
 0  10   20  NaN  NA
 1  20   40  NaN  No
 2  NaN  No  50   10
 3  NaN  NA  50   20

标签: pythonpython-3.xpandasdataframe

解决方案


使用 ifNANoare 字符串Series.isinDataFrame.locor 中使用:

df.loc[df.A2.isin(['NA','No']), 'A1'] = np.nan

Series.mask

df['A1'] = df['A1'].mask(df.A2.isin(['NA','No']))

如果NA缺少值,请通过以下方式对其进行测试Series.isna

df.loc[df.A2.isna() | df.A2.eq('No'), 'A1'] = np.nan

或者:

df['A1'] = df['A1'].mask(df.A2.isna() | df.A2.eq('No'))

推荐阅读