[Python] 특정 값이 최대값을 가지는 행(row) 추출

업데이트:

개요

jpg

아래 데이터프레임을 예제로 보자.

import pandas as pd
...
df.head()
sepal length (cm) sepal width (cm) petal length (cm) petal width (cm) target
0 5.1 3.5 1.4 0.2 setosa
1 4.9 3.0 1.4 0.2 setosa
2 4.7 3.2 1.3 0.2 setosa
3 4.6 3.1 1.5 0.2 setosa
4 5.0 3.6 1.4 0.2 setosa

target 컬럼에는 setosa, versicolor, virginica 3개의 범주가 있다.
이 세 범주의 “sepal length (cm)” 최대값을 가지는 행(row)을 추출해보자.


1. idxmax() 이용

df.loc[df.groupby(['target'])['sepal length (cm)'].idxmax()]
sepal length (cm) sepal width (cm) petal length (cm) petal width (cm) target
14 5.8 4.0 1.2 0.2 setosa
50 7.0 3.2 4.7 1.4 versicolor
131 7.9 3.8 6.4 2.0 virginica


2. sort_values(), drop_duplicates() 활용

df.sort_values(by=['target','sepal length (cm)'], ascending=False).drop_duplicates(subset=['target'], keep='first')
sepal length (cm) sepal width (cm) petal length (cm) petal width (cm) target
131 7.9 3.8 6.4 2.0 virginica
50 7.0 3.2 4.7 1.4 versicolor
14 5.8 4.0 1.2 0.2 setosa

댓글남기기