You can use numpy.select
to structure your multiple conditions. The final parameter represents default value.
conditions = [(df.A > df.B) & (df.B > df.C),
(df.A < df.B) & (df.B < df.C)]
values = [1, 2]
df['E'] = np.select(conditions, values, 3)
There are several alternatives: nested numpy.where
, sequential pd.DataFrame.loc
, pd.DataFrame.apply
. The main benefit of this solution is readability while remaining vectorised.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…