Using np.select
as in the link provided, even if what you want the choices to be series and not constant, it works the same way.
import pandas as pd
import numpy as np
# example data
np.random.seed(0)
df = pd.DataFrame(np.random.randint(0,100, 30).reshape(-1, 6),
columns=list('ABEFGH'))
Const1, Const2 = 50, 50
# conditions
conds = [(df[['A','B']].mean(axis=1) <= Const1),
(df[['A','B']].mean(axis=1) > Const1) & (df['E']<=Const2),
(df[['A','B']].mean(axis=1) > Const1) & (df['E']> Const2)]
# choices that are series
choices = [df['F'], df['G'], df['H']]
#use np.select
df['D'] = np.select(condlist=conds, choicelist=choices)
print(df)
A B E F G H D
0 44 47 64 67 67 9 67 #value from F
1 83 21 36 87 70 88 70 #value from G
2 88 12 58 65 39 87 65
3 46 88 81 37 25 77 77 #value from H
4 72 9 20 80 69 79 80