Использование:
df1 = df.iloc[:, :4]
m1 = df1.gt(df['E'], axis=0)
m2 = df1.lt(df['F'], axis=0)
df['Result'] = df1.mask(m1 & m2).apply(lambda x: x.dropna().astype(int).tolist(), axis=1)
print (df)
A B C D E F Result
0 10 18 13 11 9 25 []
1 0 32 27 3 18 28 [0, 32, 3]
2 4 6 3 29 2 23 [29]
При необходимости 0
для несогласованных значений:
s = df1.mask(m1 & m2).apply(lambda x: x.dropna().astype(int).tolist(), axis=1)
df['Result'] = np.where(s.astype(bool), s, 0)
print (df)
A B C D E F Result
0 10 18 13 11 9 25 0
1 0 32 27 3 18 28 [0, 32, 3]
2 4 6 3 29 2 23 [29]