如何在 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 一个布尔值输出,所以我们避免任何进一步的比较。
谁能告诉我上面的行代码有什么问题
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 一个布尔值输出,所以我们避免任何进一步的比较。