한 열의 값으로 Pandas DataFrame 을 정렬하는 방법
Asad Riaz
2023년1월30일
pandas.DataFrame.sort_values
메소드를 사용하여 DataFrame
값을 정렬하고 정렬 순서를 지정하는 ‘오름차순’과 정렬 된 결과에서 NaN
의 위치를 결정하는 na_position
과 같은 옵션을 소개합니다.
다음의 ‘데이터 프레임’을 고려하십시오.
import pandas as pd
df = pd.DataFrame(
{
"col1": ["g", "t", "n", "w", "n", "g"],
"col2": [5, 2, 5, 1, 3, 6],
"col3": [0, 7, 2, 8, 1, 2],
}
)
print(df)
이 코드를 실행하면 아직 정렬되지 않은 다음과 같은 출력이 표시됩니다.
col1 col2 col3
0 g 5 0
1 t 2 7
2 n 5 2
3 w 1 8
4 n 3 1
5 g 6 2
이제 아래 코드로 DataFrame
을 정렬 할 수 있습니다.
import pandas as pd
df = pd.DataFrame(
{
"col1": ["g", "t", "n", "w", "n", "g"],
"col2": [5, 2, 5, 1, 3, 6],
"col3": [0, 7, 2, 8, 1, 2],
}
)
print(df.sort_values(by=["col1"]))
DataFrame
을 col1
으로 정렬했습니다. 위의 코드를 실행하면 다음과 같은 결과가 나타납니다.
col1 col2 col3
0 g 5 0
5 g 6 2
2 n 5 2
4 n 3 1
1 t 2 7
3 w 1 8
정렬을 위해 둘 이상의 열을 사용할 수 있습니다. 위 코드의 마지막 줄을 다음과 같이 변경하겠습니다.
print(df.sort_values(by=["col1", "col2"]))
코드를 실행하면 다음과 같은 결과가 나타납니다.
col1 col2 col3
0 g 5 0
5 g 6 2
4 n 3 1
2 n 5 2
1 t 2 7
3 w 1 8
이제 DataFrame
은 col2
로 더 분류됩니다.
DataFrame
정렬 순서-인수 ascending
기본적으로 정렬은 오름차순으로, DataFrame
을 내림차순으로 변경하려면 플래그 ascending=False
를 설정해야합니다.
print(df.sort_values(by=["col1", "col2"], ascending=False))
코드를 실행하면 다음과 같은 결과가 나타납니다.
col1 col2 col3
3 w 1 8
1 t 2 7
2 n 5 2
4 n 3 1
5 g 6 2
0 g 5 0
DataFrame
정렬 순서-인수 na_position
na_position
은 정렬 후 NaN
의 위치를 지정합니다. 즉,last
는 NaN
을 끝에 놓습니다. 기본값은 정렬 된 결과의 시작 부분에 NaN 을 넣는 first
입니다.
다음의 ‘데이터 프레임’을 고려하십시오.
import numpy as np
import pandas as pd
s = pd.Series([np.nan, 2, 4, 10, 7])
print(s.sort_values(na_position="last"))
코드를 실행하면 다음과 같은 결과가 나타납니다.
1 2.0
2 4.0
4 7.0
3 10.0
0 NaN