다음과 같은 데이터 프레임이 있습니다.
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)에 해당하는 월 번호를 얻기 위해 두 번째 열을 만들었습니다. 거기에서 달력 월 순서에 따라이 데이터 프레임을 어떻게 정렬 할 수 있습니까?
답변
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']
이 고유 하기 때문에이 예제에서는 실제로 의미가 없습니다 .
답변
위의 솔루션을 시도했지만 결과를 얻지 못하므로 다른 솔루션을 찾았습니다. 상승은 = 거짓 의 dataframe를 주문하는 것입니다 내림차순 , 순서를 기본적으로은 True입니다 . 파이썬 3.6.6 및 팬더 0.23.4 버전을 사용하고 있습니다.
final_df = df.sort_values(by=['2'], ascending=False)
자세한 내용은 팬더 설명서를 참조하십시오 .
답변
데이터에 더 많은 연산을 추가하기 만하면됩니다. 데이터 프레임이 있다고 가정 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)
줄 것이다 sorted
A와 라벨의 출력을dataframe
index label
0 test 2
1 experiment 1
답변
다른 솔루션과 마찬가지로 :
문자열 데이터 (월 이름)를 분류하고 다음과 같이 정렬 할 수 있습니다.
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
합니다.