Pandas에서 특정 열의 최댓값을 찾고, 그 값이 속한 행의 나머지 값들까지 함께 반환하려면 df.loc[df[col].idxmax()]를 사용하면 됩니다. 여기서 idxmax()는 해당 열에서 최댓값이 위치한 인덱스를 반환하고, loc은 그 인덱스에 해당하는 전체 행을 가져옵니다. 예제를 통해 자세히 살펴보겠습니다.
처리 단계
- 2차원이면서 크기 변경이 가능하고 서로 다른 타입의 데이터를 담을 수 있는 표 형태의 데이터프레임 df를 생성합니다.
- 입력 DataFrame인 df를 출력합니다.
- 최댓값을 찾고자 하는 열 이름을 변수 col에 지정합니다.
- df.loc[df[col].idxmax()]를 사용하여 해당 열의 최댓값과 그에 대응하는 행을 찾습니다.
- 4단계의 결과를 출력합니다.
예제 코드
import pandas as pd
df = pd.DataFrame(
{
"x": [5, 2, 7, 0],
"y": [4, 7, 5, 1],
"z": [9, 3, 5, 1]
}
)
print("Input DataFrame is:\n", df)
col = "x"
max_x = df.loc[df[col].idxmax()]
print("Maximum value of column ", col, " and its corresponding row values:\n", max_x)
col = "y"
max_x = df.loc[df[col].idxmax()]
print("Maximum value of column ", col, " and its corresponding row values:\n", max_x)
col = "z"
max_x = df.loc[df[col].idxmax()]
print("Maximum value of column ", col, " and its corresponding row values:\n", max_x)실행 결과
Input DataFrame is: x y z 0 5 4 9 1 2 7 3 2 7 5 5 3 0 1 1 Maximum value of column x and its corresponding row values: x 7 y 5 z 5 Name: 2, dtype: int64 Maximum value of column y and its corresponding row values: x 2 y 7 z 3 Name: 1, dtype: int64 Maximum value of column z and its corresponding row values: x 5 y 4 z 9 Name: 0, dtype: int64
설명
위 실행 결과를 보면 각 열마다 동작 방식을 확인할 수 있습니다.
- x 열: 최댓값 7은 인덱스 2에 위치하며, 해당 행의 y는 5, z는 5입니다.
- y 열: 최댓값 7은 인덱스 1에 위치하며, 해당 행의 x는 2, z는 3입니다.
- z 열: 최댓값 9는 인덱스 0에 위치하며, 해당 행의 x는 5, y는 4입니다.
반환되는 결과는 Series 객체로, 행 이름(Name)에는 최댓값이 있는 행의 인덱스가 표시됩니다. 이 방법은 데이터 분석 시 특정 기준 열에서 가장 높은(또는 낮은) 값을 가진 레코드 전체를 확인할 때 매우 유용하게 활용됩니다. 참고로 최솟값이 위치한 행을 찾으려면 idxmin()을 같은 방식으로 사용하면 됩니다.