2016-01-29 4 views
2

У меня есть Dataframe вроде так:падение панды 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? note: max изменится с набора данных на набор данных, поэтому просто удалить четвертую строку недостаточно.

Я пробовал несколько вещей, таких как я могу удалить максимальное значение, которое оставляет рамку данных, как показано ниже, но не удалось удалить всю строку.

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

Вы можете просто фильтр ФР, как так:

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 
Смежные вопросы