Python/NumPy | Pandas

[Pandas] sort_values - DataFrame 값 기준 정렬

비번변경 2024. 2. 13. 20:48

개요

DataFrame을 특정 컬럼들을 기준으로 정렬하고 싶다. 방법을 적어둔다.

 

+ 이전에 2022.12.20 - [Python] Pandas - 데이터프레임 데이터 조작 1에서 적어두긴 했지만…… 검색에 걸리지도 않아서 다시 작성한다!

 

DataFrame.sort_values

DataFrame.sort_values 함수는 값을 기준으로 데이터프레임을 정렬한다.

DataFrame.sort_values(by, *, 
                      axis=0, ascending=True, 
                      inplace=False, kind='quicksort', 
                      na_position='last', ignore_index=False, 
                      key=None)

- by : 정렬 기준. 문자열 또는 리스트로 전달한다.

- axis : 정렬 축. 0 또는 index이면 by에 지정한 컬럼의 값을 기준으로 행을 정렬한다. 1 또는 columns이면 by에 지정한 인덱스의 값을 기준으로 열을 정렬한다.

-  asceding : True이면 오름차순으로, False면 내림차순으로 지정한다. 리스트로 전달하는 경우 by에 전달한 매개변수와 길이가 같아야 한다.

-  inplace : True이면 원본 DataFrame을 덮어쓴다.

-  kind: 정렬에 사용할 알고리즘. 'quicksort', 'mergesort', 'heapsort', 'stable'를 지정할 수 있다.

-  na_position : 값에 NaN가 포함된 경우, 해당 값의 위치를 지정한다.

-  ignore_index : True이면 인덱스를 유지하지 않고 초기화한다.

 

 

사용 예시

예시 데이터프레임

df = pd.DataFrame({
    'col1': ['A', 'A', 'B', np.nan, 'D', 'C'],
    'col2': [2, 1, 9, 8, 7, 4],
    'col3': [0, 1, 9, 4, 2, 3],
    'col4': ['a', 'B', 'c', 'D', 'e', 'F']
})

 

 

단일 컬럼 기준 정렬

df.sort_values(by=['col2'])

 

여러 컬럼 기준 정렬 / 인덱스 초기화

df.sort_values(by=['col1', 'col2'], ignore_index=True)

여러 컬럼을 기준으로 정렬할 때는 전달한 컬럼의 순서대로 우선순위를 가진다.

df.sort_values(by=['col2', 'col1'], ignore_index=True)

 

내림차순 정렬

df.sort_values(by=['col2'], ascending=False)

 

여러 컬럼을 기준으로 정렬 / 각 컬럼의 정렬 순서 지정

col1 기준 내림차순으로, col2 기준으로 오름차순으로 정렬한다.

df.sort_values(by=['col1', 'col2'], ascending=[False, True])

 

인덱스를 기준으로 컬럼 정렬

df.T.sort_values(by='col1', axis=1)

 

 

참고 문서

https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.sort_values.html

https://wikidocs.net/153307