sort_index 메서드를 사용해서 데이터프레임의 인덱스를 정렬하던 중 원하는 순서대로 정렬할 수 없는 문제가 발생했습니다.
알파벳 순서로 아무리 오름차순/내림차순 정렬을 시도해도 원하는 순서대로 나열할 수 없었습니다.
고민하던 중 해당 데이터 타입을 카테고리형으로 변환해야겠다는 생각이 들었습니다.
해당 데이터는 Medal 관련 값들로 'Gold', 'Silver', 'Bronze'로 분류가 가능했습니다.
from pandas.api.types import CategoricalDtype
cat_medal = CategoricalDtype(
['Bronze', 'Silver', 'Gold'],
ordered=True
)
type(cat_medal)
# pandas.core.dtypes.dtypes.CategoricalDtype
Gold, Silver, Bronze 순으로 Medal 인덱스를 정렬하기 위해 CategoricalDtype 클래스를 사용했습니다.
해당 클래스를 사용해 순서가 존재하는 카테고리 타입을 인스턴스화할 수 있었습니다.
df_target['Medal'] = df_target['Medal'].astype(cat_medal)
기존 Medal 컬럼의 데이터 타입을 변경했습니다.
이제 Medal 컬럼은 sort_values 메서드를 사용해서 정렬할 수 있습니다.
df_kor = (
df_target
.pivot_table(
index=['Year', 'Medal'],
...
)
.sort_index(ascending=[False, False])
)
하지만 Medal 컬럼을 인덱스로 사용해야 하기 때문에 sort_index 메서드를 사용했습니다.
df_kor은 멀티인덱스를 갖는 데이터프레임으로, 두 중첩 인덱스 Year과 Medal을 모두 내림차순 정렬합니다.
그 결과 Medal 인덱스를 Gold, Silver, Bronze 순으로 정렬하는 데 성공했습니다.
'파이썬・ML > pandas' 카테고리의 다른 글
판다스 데이터프레임 정리(2) 결측값/중복값/필터링/정렬 등 (0) | 2023.07.30 |
---|---|
판다스 데이터프레임 정리(1) 주요속성/메서드/조회 (0) | 2023.07.28 |
판다스 Series 정리(2) 인덱싱/필터링/정렬/연산/결측값 (0) | 2023.07.27 |
판다스 Series 정리(1) 특징/속성/생성법 (0) | 2023.07.27 |
판다스 데이터프레임과 피벗테이블 (0) | 2023.07.03 |