问题描述
我有以下数据框:
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