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

问题描述

我有以下数据框:

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)

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

解决方法

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)]
,

简单地过滤:

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

然后你就得到了想要的结果:

    order_id    amount  records
1         2        5    10
3         4        1    3