如果一列大于另一列则删除行
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
我有以下数据框:
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