본문 바로가기
판다스/판다스 팁

[pandas] AAA → AA → A → BBB순으로 정렬하기

by 김판다t 2024. 3. 28.

 

예제

 

import pandas as pd
data1 = {'Grade': ['AAA', 'C', 'BB', 'AA', 'BBB', 'A'], 
         'Value': [10, 20, 30, 40, 50, 60]}
df = pd.DataFrame(data1)

 

df

 

 

 

정렬 문제

 

AAA → AA → A → BBB순으로 정렬하기

 

 

 

 

 

먼저 첫 글자로 정렬하고, 동일할 때 문자의 길이로 정렬을 수행합니다.

 

sort_values 함수의 매개변수 key를 활용합니다.

 

out = df.sort_values(
    'Grade', key=lambda x: [(i[0], -len(i)) for i in x]
)

 

out:

 

 

 

혹은 Grade 열에 판다스의 문자열 함수를 적용해 두 개의 시리즈를 생성한 다음 zip 함수로 묶을 수도 있습니다.  

out = df.sort_values(
    'Grade', key=lambda x: list(zip(x.str[0], x.str.len().mul(-1)))
)

 

같은 결과를 반환합니다.


 

교보문고 구매 페이지, 알라딘 구매 페이지yes24 구매 페이지