Pandas: 문자열 열을 기준으로 dataframe을 정렬하는 방법
다음 방법을 사용하여 특정 문자열 열의 값을 기반으로 pandas DataFrame의 행을 정렬할 수 있습니다.
방법 1: 문자열 열로 정렬(열에 문자만 포함된 경우)
df = df. sort_values (' my_string_column ')
방법 2: 문자열 열 기준으로 정렬(열에 문자 와 숫자가 포함된 경우)
#create 'sort' column that contains digits from 'my_string_column' df[' sort '] = df[' my_string_column ']. str . extract (' (\d+) ', expand= False ). astype (int) #sort rows based on digits in 'sort' column df = df. sort_values (' sort ')
다음 예에서는 각 방법을 실제로 사용하는 방법을 보여줍니다.
예 1: 문자열 열을 기준으로 정렬(열에 문자만 포함된 경우)
식료품점의 다양한 제품 판매에 대한 정보가 포함된 다음과 같은 pandas DataFrame이 있다고 가정합니다.
import pandas as pd #createDataFrame df = pd. DataFrame ({' product ': ['Apples', 'Oranges', 'Bananas', 'Lettuce', 'Beans'], ' sales ': [18, 22, 19, 14, 29]}) #view DataFrame print (df) product sales 0 Apples 18 1 Oranges 22 2 Bananas 19 3 Lettuce 14 4 Beans 29
다음 구문을 사용하여 제품 열의 문자열을 기반으로 DataFrame의 행을 정렬할 수 있습니다.
#sort rows from A to Z based on string in 'product' column
df = df. sort_values (' product ')
#view updated DataFrame
print (df)
product sales
0 Apples 18
2 Bananas 19
4 Beans 29
3 Lettuce 14
1 Oranges 22
이제 행은 Product 열의 문자열을 기준으로 A부터 Z까지 정렬됩니다.
대신에 Z에서 A로 정렬하려면, 간단히 ascending=False 인수를 추가하면 됩니다:
#sort rows from Z to A based on string in 'product' column
df = df. sort_values (' product ', ascending= False )
#view updated DataFrame
print (df)
product sales
1 Oranges 22
3 Lettuce 14
4 Beans 29
2 Bananas 19
0 Apples 18
이제 행은 Product 열의 문자열을 기준으로 Z에서 A로 정렬됩니다.
예시 2: 문자열 열 기준 정렬(열에 문자 와 숫자가 포함된 경우)
식료품점의 다양한 제품 판매에 대한 정보가 포함된 다음과 같은 pandas DataFrame이 있다고 가정합니다.
import pandas as pd #createDataFrame df = pd. DataFrame ({' product ': ['A3', 'A5', 'A22', 'A50', 'A2', 'A7', 'A9', 'A13'], ' sales ': [18, 22, 19, 14, 14, 11, 20, 28]}) #view DataFrame print (df) product sales 0 A3 18 1 A5 22 2 A22 19 3 A50 14 4 A2 14 5 A7 11 6 A9 20 7 A13 28
제품 열의 문자열에는 문자와 숫자가 모두 포함되어 있습니다.
제품 열의 값을 사용하여 DataFrame의 행을 정렬하려고 하면 문자열이 숫자를 기준으로 올바른 순서로 정렬되지 않습니다.
import pandas as pd #sort rows based on strings in 'product' column df = df. sort_values (' product ') #view updated DataFrame print (df) product sales 7 A13 28 4 A2 14 2 A22 19 0 A3 18 1 A5 22 3 A50 14 5 A7 11 6 A9 20
대신 제품 열의 숫자만 포함하는 sort 라는 새 임시 열을 만든 다음 정렬 열의 값을 기준으로 정렬한 다음 열을 완전히 삭제해야 합니다.
import pandas as pd #create new 'sort' column that contains digits from 'product' column df[' sort '] = df[' product ']. str . extract (' (\d+) ', expand= False ). astype (int) #sort rows based on digits in 'sort' column df = df. sort_values (' sort ') #drop 'sort' column df = df. drop (' sort ', axis= 1 ) #view updated DataFrame print (df) product sales 4 A2 14 0 A3 18 1 A5 22 5 A7 11 6 A9 20 7 A13 28 2 A22 19 3 A50 14
이제 행은 제품 열의 문자열을 기준으로 정렬되고 숫자는 올바른 순서로 정렬됩니다.
참고 : 여기에서 pandas sort_values() 함수에 대한 전체 문서를 찾을 수 있습니다.
추가 리소스
다음 튜토리얼에서는 Pandas에서 다른 일반적인 작업을 수행하는 방법을 설명합니다.
팬더: 날짜별로 정렬하는 방법
Pandas: 이름별로 열을 정렬하는 방법
Pandas: 인덱스와 열을 모두 기준으로 정렬하는 방법