Python 根据过滤器创建新列值

Python 根据过滤器创建新列值,python,pandas,Python,Pandas,我将这些条件应用于我的数据帧。如果所有这些条件都为真,我想创建一个值为1的整数列,但我不知道如何创建最后一步 我的最终目标是在SQL中使用case样式的东西 df.loc[df['AREA'].isin([8,22,19,27,22]) | (df['AREA']==4) & (~df['REGION'].isin([53,65,86])) | (df['AREA']==1) & (df['company']==1)] 我建议分别创建每个遮罩并传递到: 还有什么让你特别困惑?

我将这些条件应用于我的数据帧。如果所有这些条件都为真,我想创建一个值为1的整数列,但我不知道如何创建最后一步

我的最终目标是在SQL中使用case样式的东西

df.loc[df['AREA'].isin([8,22,19,27,22]) | (df['AREA']==4) & (~df['REGION'].isin([53,65,86])) | (df['AREA']==1) & (df['company']==1)]


我建议分别创建每个遮罩并传递到:


还有什么让你特别困惑?我的疑问是,如果这些条件得到验证,如何创建这个最终的目标变量,谢谢,谢谢。但在现实生活中,我在SQl中使用了case的样式,所以我有几个组合,我的目标值将有几个不同的值。你还建议戴口罩吗?thanks@progster所以你想要df['new']=df['AREA'].isin[8,22,19,27,22]| df['AREA']==4&~df['REGION'].isin[53,65,86]| df['AREA']==1&df['company']==1?是的,我想创建一个df['new']列,如果这些条件为真,值将为1。然后我有其他条件,值将是2,以此类推,在SQL@progster-答案已编辑。为样本数据创建了3个单独的掩码。
m1 = df['AREA'].isin([8,22,19,27,22])
m2 = (df['AREA']==4) & (~df['REGION'].isin([53,65,86])) 
m3 = (df['AREA']==1) & (df['company']==1)

df['new'] = np.select([m1, m2, m3], [1,2,3], default=0)