한 열에서 팬더 데이터 프레임을 정렬하는 방법


237

다음과 같은 데이터 프레임이 있습니다.

print(df)

        0          1     2
0   354.7      April   4.0
1    55.4     August   8.0
2   176.5   December  12.0
3    95.5   February   2.0
4    85.6    January   1.0
5     152       July   7.0
6   238.7       June   6.0
7   104.8      March   3.0
8   283.5        May   5.0
9   278.8   November  11.0
10  249.6    October  10.0
11  212.7  September   9.0

보다시피, 월은 달력 순서가 아닙니다. 그래서 매월 (1-12)에 해당하는 월 번호를 얻기 위해 두 번째 열을 만들었습니다. 거기에서 달력 월 순서에 따라이 데이터 프레임을 어떻게 정렬 할 수 있습니까?

답변:


326

sort_values특정 열의 값으로 df를 정렬하는 데 사용하십시오 .

In [18]:
df.sort_values('2')

Out[18]:
        0          1     2
4    85.6    January   1.0
3    95.5   February   2.0
7   104.8      March   3.0
0   354.7      April   4.0
8   283.5        May   5.0
6   238.7       June   6.0
5   152.0       July   7.0
1    55.4     August   8.0
11  212.7  September   9.0
10  249.6    October  10.0
9   278.8   November  11.0
2   176.5   December  12.0

두 개의 열 sort_values을 기준으로 정렬하려면 정렬 우선 순위에 따라 정렬 된 열 레이블이있는 열 레이블 목록을 전달하십시오 . 을 사용 df.sort_values(['2', '0'])하면 결과가 열별로 정렬 2됩니다 0. 물론, 각 값 df['2']이 고유 하기 때문에이 예제에서는 실제로 의미가 없습니다 .


75

위의 솔루션을 시도했지만 결과를 얻지 못하므로 다른 솔루션을 찾았습니다. 상승은 = 거짓 의 dataframe를 주문하는 것입니다 내림차순 , 순서를 기본적으로은 True입니다 . 파이썬 3.6.6 및 팬더 0.23.4 버전을 사용하고 있습니다.

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

자세한 내용은 팬더 설명서를 참조하십시오 .


9

데이터에 더 많은 연산을 추가하기 만하면됩니다. 데이터 프레임이 있다고 가정 df하고 원하는 출력을 얻기 위해 여러 작업을 수행 할 수 있습니다

ID         cost      tax    label
1       216590      1600    test      
2       523213      1800    test 
3          250      1500    experiment

(df['label'].value_counts().to_frame().reset_index()).sort_values('label', ascending=False)

줄 것이다 sortedA와 라벨의 출력을dataframe

    index   label
0   test        2
1   experiment  1

7

다른 솔루션과 마찬가지로 :

문자열 데이터 (월 이름)를 분류하고 다음과 같이 정렬 할 수 있습니다.

df.rename(columns={1:'month'},inplace=True)
df['month'] = pd.Categorical(df['month'],categories=['December','November','October','September','August','July','June','May','April','March','February','January'],ordered=True)
df = df.sort_values('month',ascending=False)

개체 month name를 만드는 동안 지정한 순서대로 데이터를 제공 Categorical합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.