【问题标题】:drop row if one column is greater than another如果一列大于另一列,则删除行
【发布时间】:2021-04-21 00:17:30
【问题描述】:

我有以下数据框:

order_id amount records
1        2      1
2        5      10
3        20     5
4        1      3

我想删除数量大于记录的行,输出应该是:

order_id amount records
2        5      10
4        1      3

这是我尝试过的:

 df = df.drop(
        df[df.amount > df.records].index, inplace=True)

这是删除所有行,欢迎提出任何建议。

【问题讨论】:

    标签: python python-3.x pandas database series


    【解决方案1】:

    简单过滤:

    df = df[df['amount']<df['records']]
    

    你会得到想要的结果:

        order_id    amount  records
    1         2        5    10
    3         4        1    3
    

    【讨论】:

      【解决方案2】:
      df.loc[~df.amount.gt(df.records)]
      
          
          order_id    amount  records
      1         2        5    10
      3         4        1    3
      

      说明:比较返回布尔值:

      ~df.amount.gt(df.records)
      
      0    False
      1     True
      2    False
      3     True
      dtype: bool
      

      这将返回 amount 不大于 records 的值。

      您可以使用此布尔值来索引数据框以获得所需的值。

      或者,您也可以使用下面的代码,而无需调用否定 (~):

       df.loc[df.amount.le(df.records)]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-01
        • 1970-01-01
        • 2016-01-02
        • 2020-10-23
        • 1970-01-01
        相关资源
        最近更新 更多