Я пытаюсь создать новый столбец, который будет закодирован как 1, если какое-либо значение из набора столбцов соответствует тому же условию. Вот что я пробовал, и я получаю ошибку. Я также пытался заменить оператором where, и в каждом цикле менялись значения new_var, но я хочу продолжать перекодирование с предыдущих шагов цикла (не заменять каждый шаг, просто дополнительное перекодирование). Итак, что мне нужно: если любое значение в столбцах a, b, c составляет <-0.5 или> 0.5, мне нужно, чтобы New_Var был закодирован как 1, иначе ноль.
df = pd.DataFrame(np.random.randn(10, 5), columns=list('abcde'))
df
cols = ['a', 'b', 'c']
def rec_cap(x,y):
if (x<-0.5) | (x>0.5):
return 1
else:
return y
df['new_var']=0
for p in cols:
df['new_var']=df.loc[:,[p]].apply(rec_cap, df['new_var'])