pandas 根据条件填写特定列

pandas fillna specific columns based on condition

下面是我的DF的例子

col1      col2     col3    col4 
Comp1     False    01St    97
Comp2     False    02St    97
Comp3     True     03St    97
Comp4     False    04St    97

目标是在 col2 == True 时填充 col3 和 col4

以下是我迄今为止尝试过的内容

cols = df.columns.tolist()[-2]
df[cols] = np.where(df.col2 == True, np.nan, df[cols])

预期输出

col1      col2     col3    col4 
Comp1     False    01St    97
Comp2     False    02St    97
Comp3     True     NaN     NaN
Comp4     False    04St    97

尝试

# two last columns
cols = df.columns[-2:]
df[cols] = df[cols].mask(df['col2'])

或赋值 iloc:

# 2 not 3
df.iloc[df['col2'], 2:] = np.nan

输出:

    col1   col2  col3  col4
0  Comp1  False  01St  97.0
1  Comp2  False  02St  97.0
2  Comp3   True   NaN   NaN
3  Comp4  False  04St  97.0