Вы можете использовать isin
для проверки членства в allowed_list
, ~
, чтобы отменить это, а затем .loc
, чтобы изменить серию на месте:
>>> df.loc[~df["S"].isin(allowed_vals), "S"] = "None"
>>> df
S
0 D
1 ND
2 D
3 None
, потому что
>>> df["S"].isin(allowed_vals)
0 True
1 True
2 True
3 False
Name: S, dtype: bool
Если вы хотите изменить весь кадр (а не только столбец S), вы можете сделать маску размера кадра:
>>> df
S T
0 D D
1 ND A
2 D ND
3 garbage A
>>> df[~df.isin(allowed_vals)] = "None"
>>> df
S T
0 D D
1 ND None
2 D ND
3 None None