Создать новый столбец в пандах на основе значений в нескольких столбцах и одинаковых условиях - PullRequest
0 голосов
/ 04 июля 2018

Я пытаюсь создать новый столбец, который будет закодирован как 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'])

1 Ответ

0 голосов
/ 04 июля 2018

IIUC

((df.loc[:,cols].gt(0.5))|(df.loc[:,cols].lt(-0.5))).any(1).astype(int)
Out[564]: 
0    1
1    1
2    1
3    1
4    1
5    1
6    1
7    1
8    1
9    0
dtype: int32
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...