如何在 lambda 和 if 条件下使用 pandas.assign

how to use pandas.assign with lambda and if condition

谁能告诉我上面的行代码有什么问题

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,这是不正确的 通常我必须同时拥有它们,因为我已经用一个简单的 for{if else} 尝试过,但是执行时间太长。

尝试更好的方法:

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

或者对于任何其他 if,else 条件使用 np.where()

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

(df['std']<out_inf) 这样的条件将 return 一个布尔值输出,所以我们避免任何进一步的比较。