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
下面是我的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