как использовать pandas.assign с лямбда и если условие - PullRequest
1 голос
/ 31 мая 2019

Может кто-нибудь, пожалуйста, скажите мне, в чем проблема в строковом коде выше

out_inf=q25-1.5*iqr
out_sup=q75+1.5*iqr

df=df.assign(label=1 if ((df'std']<out_inf) is True) | ((df['std']>out_sup) is True) else 0)

у моего нового столбца есть только 0, что неправильно, обычно я должен иметь их оба, потому что я попробовал это с простымдля {если еще}, но это заняло слишком много времени.

1 Ответ

0 голосов
/ 31 мая 2019

Попробуйте лучший подход:

df['label']=((df['std']<out_inf)|(df['std']>out_sup)).astype(int)

Или для любых других, если в других условиях используются np.where()

m=(df['std']<out_inf)|(df['std']>out_sup)
df['label']=np.where(m,1,0)

Условия типа (df['std']<out_inf) будутвернуть логический вывод уже, поэтому мы избегаем дальнейшего сравнения.

...