根据Python中的多个条件进行过滤

时间:2019-04-20 12:09:55

标签: python pandas numpy filter

我有一个df,其中包含股票列表,指数成员资格,市值,市值排名,营业额和营业额排名。

我需要创建另一个名为“删除”的列,该列将根据一些条件删除库存。

使用&和|

的条件列表
  1. 当前索引成员必须等于DAX                      和

  2. 市值排名必须大于35                      或

  3. 营业额排名必须大于35

以下代码在索引成员= dax并且市值排名> 35时有效,但在索引成员= dax和成交量> 35时无效。相反,它仅查看营业额大于35而不是指数成员资格= dax。

使用以下代码,我的结果是在新创建的“删除”列中将股票显示为删除,因为它的成交量排名是79,但索引成员资格是MDAX而不是DAX。第一个条件必须满足,在这种情况下不是。

有人可以帮我吗


df['Deletes'] = np.where((df['Index Membership'] == 'DAX') & (df['MKT Rank'] > 35) | (df['Turnover Rank'] > 35),'delete','')

1 个答案:

答案 0 :(得分:3)

我认为可以在此处添加另一个(),例如:

df['Deletes'] = np.where((df['Index Membership'] == 'DAX') & 
                         ((df['MKT Rank'] > 35) | (df['Turnover Rank'] > 35)),'delete','')

因为operator precedence