【问题标题】:filtering based on multiple conditions in PythonPython中基于多个条件的过滤
【发布时间】:2019-09-10 09:44:47
【问题描述】:

我有一个 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','')

【问题讨论】:

  • 检查优先规则。

标签: python pandas numpy filter


【解决方案1】:

我认为这里可以添加另一个 () 喜欢:

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

因为operator precedence

【讨论】:

    猜你喜欢
    • 2022-07-21
    • 2021-12-14
    • 1970-01-01
    • 2010-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多