반응형
데이터 만들기
위와 같은 데이터프레임이 있다.
[목표 : 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 컬럼의 값이 제일 높은 인덱스를 이용해
그 행만 추출했다.
반응형
'Pandas > 응용' 카테고리의 다른 글
판다스 - groupby : 그룹 객체에서 컬럼간 연산 (0) | 2020.07.14 |
---|---|
판다스 - groupby : 컬럼 선택 (SeriesGroupBy, DataFrameGroupBy) (0) | 2020.07.12 |
판다스 - 콤마(,) 로 구분된 컬럼에서 원하는 데이터 추출하기 (0) | 2020.07.08 |
판다스 - groupby : 인덱스를 함수로 그룹핑하기 (0) | 2020.07.07 |
판다스 - groupby : 인덱스로 그룹화하기 (멀티인덱스, level) (0) | 2020.07.07 |