2016-01-29 237 views
2

的最大值我有像这样一个数据帧:降大熊猫据帧行基于列

 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 

回答

9

你可以只过滤,像这样的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