Используя np.select
, как в предоставленной ссылке, даже если вы хотите, чтобы выбор был последовательным, а не постоянным, он работает таким же образом.
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