根据列的最大值删除pandas数据帧行

时间:2016-01-29 15:01:10

标签: python numpy pandas dataframe

我有一个像这样的数据帧:

      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?注意:最大值将从数据集更改为数据集,因此仅删除第4行是不够的。

我已经尝试了一些方法,例如我可以删除最大值,这样可以保留数据帧,但是还没有能够删除整行。

  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 个答案:

答案 0 :(得分:11)

您可以像这样过滤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

drop使用idxmax将返回最大值的标签行:

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