list comprehension c несколькими списками и условиями

Есть дата фрейм

df = pd.DataFrame({'Val': [10, 150, 9, 13],
                    'R1':[101,102,103,104]})

требуется создать новую колонку 'Rnew' на основе имеющихся данных. условия для заполнения колонки:

if Val >100 then Rnew = f(R1)
            else Rnew = R1
f(R1) = min(150; sqrt(100*(Val-100)+R1*R1*2.71)

хотелось бы реализовать с помощью спискового включения, и посмотреть скорость выполнения. сейчас работает через numpy:

df['tmp'] = np.sqrt(100*(df['Val']-100) + np.power(df['R1'], 2)*2.71)
df['Rnew'] = np.where(df['Val'] > 100, np.where(df['tmp'] > 150, 150, df['tmp']), df['R1'])

Ответы (0 шт):