根据某一列的最大值删除pandas数据框中的行

10

我有一个如下的数据框:

      p_rel      y_BET  sq_resid
1  0.069370  41.184996  0.292942
2  0.116405  43.101090  0.010953
3  0.173409  44.727748  0.036832
4  0.225629  46.681293  0.540616
5  0.250682  46.980616  0.128191
6  0.294650  47.446113  0.132367
7  0.322530  48.078038  0.235047

我该如何删除第四行,因为它具有sq_resid的最大值?注意:每个数据集的最大值都会发生变化,所以仅删除第四行是不够的。
我尝试了几种方法,例如我可以删除最大值,这样数据框将变为以下形式,但是我无法删除整行。
  p_rel      y_BET  sq_resid
1  0.069370  41.184996  0.292942
2  0.116405  43.101090  0.010953
3  0.173409  44.727748  0.036832
4  0.225629  46.681293  Nan
5  0.250682  46.980616  0.128191
6  0.294650  47.446113  0.132367
7  0.322530  48.078038  0.235047
1个回答

29
你可以像这样过滤数据框 df:

你可以简单地对 df 进行筛选:

In [255]:
df.loc[df['sq_resid']!=df['sq_resid'].max()]

Out[255]:
      p_rel      y_BET  sq_resid
1  0.069370  41.184996  0.292942
2  0.116405  43.101090  0.010953
3  0.173409  44.727748  0.036832
5  0.250682  46.980616  0.128191
6  0.294650  47.446113  0.132367

或者使用 idxmax 方法,它将返回最大值所在的标签行,然后再使用 drop 方法移除该行:

In [257]:
df.drop(df['sq_resid'].idxmax())

Out[257]:
      p_rel      y_BET  sq_resid
1  0.069370  41.184996  0.292942
2  0.116405  43.101090  0.010953
3  0.173409  44.727748  0.036832
5  0.250682  46.980616  0.128191
6  0.294650  47.446113  0.132367
7  0.322530  48.078038  0.235047

如果我想使用多个条件来删除行,基于几个条件怎么办? - bibscy
@bibscy 参考链接:https://dev59.com/YGYr5IYBdhLWcg3whKit - EdChum

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接