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: 인덱스와 열을 모두 기준으로 정렬하는 방법

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다