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

drop row if one column is greater than another

我有以下数据框:

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

解释:比较return一个布尔值:

~df.amount.gt(df.records)

0    False
1     True
2    False
3     True
dtype: bool

这 returns 个值,其中 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