티스토리 뷰

반응형

Stack Overflow에 자주 검색, 등록되는 문제들과 제가 개발 중 찾아 본 문제들 중에서 나중에도 찾아 볼 것 같은 문제들을 정리하고 있습니다.

Stack Overflow에서 가장 먼저 확인하게 되는 가장 높은 점수를 받은 Solution과 현 시점에 도움이 될 수 있는 가장 최근에 업데이트(최소 점수 확보)된 Solution을 각각 정리하였습니다.

 

아래 word cloud를 통해 이번 포스팅의 주요 키워드를 미리 확인하세요.

how to sort pandas dataframe from one column

Pandas 데이터프레임에서 하나의 열을 기준으로 정렬하는 방법

 문제 내용 

I have a data frame like this:

이렇게 데이터프레임이 있습니다.
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

 

As you can see, months are not in calendar order. So I created a second column to get the month number corresponding to each month (1-12). From there, how can I sort this data frame according to calendar months' order?

보시다시피, 월(months)이 달력 순서대로 나열되어 있지 않습니다. 그래서 각 월에 해당하는 월 번호(1~12)를 얻기 위해 두 번째 열을 만들었습니다. 이제 이 데이터프레임을 달력 월 순서에 따라 어떻게 정렬할 수 있을까요?

 

 

 

 높은 점수를 받은 Solution 

Use sort_values to sort the df by a specific column's values:

sort_values를 사용하여 특정 열의 값을 기준으로 데이터프레임을 정렬하세요.
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

 

If you want to sort by two columns, pass a list of column labels to sort_values with the column labels ordered according to sort priority. If you use df.sort_values(['2', '0']), the result would be sorted by column 2 then column 0. Granted, this does not really make sense for this example because each value in df['2'] is unique.

만약 두 개의 열을 기준으로 정렬하고 싶다면, 정렬 우선순위에 따라 열 라벨의 리스트를 sort_values에 전달하면 됩니다. df.sort_values(['2', '0'])을 사용하면 결과는 열 2를 기준으로 먼저 정렬된 다음 열 0을 기준으로 정렬됩니다. 하지만 이 예제에서는 df['2']의 각 값이 고유하기 때문에 이 방법은 별로 의미가 없습니다.

 

 

 

 가장 최근 달린 Solution 

Just adding a few more insights

추가적인 팁을 몇 가지 더 알려드립니다.
df=raw_df['2'].sort_values() # will sort only one column (i.e 2)

 

but ,

하지만,
df =raw_df.sort_values(by=["2"] , ascending = False)  # this  will sort the whole df in decending order on the basis of the column "2"

 

 

출처 : https://stackoverflow.com/questions/37787698/how-to-sort-pandas-dataframe-from-one-column

반응형
댓글
공지사항
최근에 올라온 글