代码之家  ›  专栏  ›  技术社区  ›  ApacheOne

如果一列大于另一列,则删除行

  •  0
  • ApacheOne  · 技术社区  · 4 年前

    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)
    

    2 回复  |  直到 4 年前
        1
  •  1
  •   adhg veen    4 年前

    只需按以下方式筛选:

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

        order_id    amount  records
    1         2        5    10
    3         4        1    3
    
        2
  •  1
  •   sammywemmy    4 年前
    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)]