본문 바로가기

Pandas/응용

판다스 - groupby : 멀티인덱스, idxmax 활용

반응형

 

데이터 만들기

 

 

위와 같은 데이터프레임이 있다.

 

 

 

 

[목표 : Alpha, Key 멀티인덱스로 그룹화하여

Val 컬럼 기준 제일 높은 값의 인덱스를 이용해, 그 인덱스의 행만 추출]

 

 

 

 

 

우선 idxmax의 개념은

 

값이 제일 큰 인덱스를 가져온다는 것이다.

 

 

 

Val 컬럼 기준으로 보면

 

120이 제일 큰 값이기에 

 

그 인덱스, 11을 반환한다.

 

 

 

이제 기존 df를 Alpha와 Key컬럼으로 그룹핑 해보자

 

 

 

 

 

이제 그룹별, Val컬럼의 idxmax를 구해보자

 

 

 

해석을 해보자면

 

A와 ㄱ의 그룹의 Val컬럼에서 제일 큰 값을 가지는 인덱스는 1

B와 ㄹ의 그룹의 Val컬럼에서 제일 큰 값을 가지는 인덱스는 7

 

이렇게 볼 수 있다.

 

 

 

 

 

 

위 결과를 for loop를 통해 값만 빼오면

 

 

각 그룹별 Val컬럼의 idxmax 값이 나온다.

 

 

 

 

이제 그룹별 순회를 하면서

 

해당 그룹의 Val컬럼에 idxmax를 이용해

그룹별 최고값을 가지는 행(시리즈)을 추출해보자

 

 

 

 

 

 

 

이렇게 개념이 정리되었으면

 

그룹별 apply를 적용하기 위해

 

함수를 정의해보자

 

 

 

그룹별 Val 컬럼의 idxmax를 구하고

 

그 인덱스에 해당하는 행을 추출하는 함수이다.

 

 

 

 

 

 

 

이를 apply로 적용해보면

 

목표에 맞춰 잘 나왔다.

 

 

 

 

 

 

 

기존 df와 비교해보면

 

 

 

Alpha와 Key 컬럼으로 그룹화하고

 

그 그룹별 Val 컬럼의 값이 제일 높은 인덱스를 이용해

 

그 행만 추출했다.

반응형