줄리아에서 데이터프레임 정렬하는 법

줄리아에서 데이터프레임 정렬하는 법

How to Sort Dataframe in julia

코드

using DataFrames

Unit1 = DataFrame(
    member = ["다영","루다","수빈","진숙"],
    birth = [99,97,96,99],
    height = [161,157,159,162]
)

Unit2 = DataFrame(
    member = ["소정","주연","지연","현정"],
    birth = [95,98,95,94],
    height = [166,172,163,165]
)
WJSN = vcat(Unit1, Unit2)

push!(WJSN, ["다원",97,167])
push!(WJSN, ["연정",99,165])

sort(WJSN, 3)
sort(WJSN, :birth)
sort(WJSN, [:birth, :height])
sort(WJSN, :birth, rev = true)

위의 예제 코드를 실행해보고 그 결과를 확인해보자.

julia> WJSN
10×3 DataFrame
 Row │ member  birth  height 
     │ String  Int64  Int64  
─────┼───────────────────────
   1 │ 다영       99     161
   2 │ 루다       97     157
   3 │ 수빈       96     159
   4 │ 진숙       99     162
   5 │ 소정       95     166
   6 │ 주연       98     172
   7 │ 지연       95     163
   8 │ 현정       94     165
   9 │ 다원       97     167
  10 │ 연정       99     165

WJSN 데이터프레임은 위와 같다.

열번호로 정렬 sort(df, cols::integer)

cols번째 열을 기준으로 정렬한다.

julia> sort(WJSN, 3)
10×3 DataFrame
 Row │ member  birth  height 
     │ String  Int64  Int64  
─────┼───────────────────────
   1 │ 루다       97     157
   2 │ 수빈       96     159
   3 │ 다영       99     161
   4 │ 진숙       99     162
   5 │ 지연       95     163
   6 │ 현정       94     165
   7 │ 연정       99     165
   8 │ 소정       95     166
   9 │ 다원       97     167
  10 │ 주연       98     172

3번째 열인 height를 기준으로 정렬된 것을 확인할 수 있다.

열이름으로 정렬 sort(df, cols::Symbol)

이름인 심볼 cols인 열을 기준으로 정렬한다.

julia> sort(WJSN, :birth)
10×3 DataFrame
 Row │ member  birth  height 
     │ String  Int64  Int64  
─────┼───────────────────────
   1 │ 현정       94     165
   2 │ 소정       95     166
   3 │ 지연       95     163
   4 │ 수빈       96     159
   5 │ 루다       97     157
   6 │ 다원       97     167
   7 │ 주연       98     172
   8 │ 다영       99     161
   9 │ 진숙       99     162
  10 │ 연정       99     165

:birth가 들어가 birth를 기준으로 정렬된 것을 확인할 수 있다.

정렬 우선순위 sort(df, cols::Array)

cols의 순서에 따라 순위를 정해서 정렬한다.

julia> sort(WJSN, [:birth, :height])
10×3 DataFrame
 Row │ member  birth  height 
     │ String  Int64  Int64  
─────┼───────────────────────
   1 │ 현정       94     165
   2 │ 지연       95     163
   3 │ 소정       95     166
   4 │ 수빈       96     159
   5 │ 루다       97     157
   6 │ 다원       97     167
   7 │ 주연       98     172
   8 │ 다영       99     161
   9 │ 진숙       99     162
  10 │ 연정       99     165

birth로 정렬하되 height도 정렬되었다. 그냥 birth를 기준으로 정렬한 것과 비교해보면 2행과 3행이 역전되었다.

역순으로 정렬 sort(df, rev::Bool=false)

rev = true를 주면 된다. 기본값은 false다.

julia> sort(WJSN, :birth, rev = true)
10×3 DataFrame
 Row │ member  birth  height 
     │ String  Int64  Int64  
─────┼───────────────────────
   1 │ 다영       99     161
   2 │ 진숙       99     162
   3 │ 연정       99     165
   4 │ 주연       98     172
   5 │ 루다       97     157
   6 │ 다원       97     167
   7 │ 수빈       96     159
   8 │ 소정       95     166
   9 │ 지연       95     163
  10 │ 현정       94     165

환경

  • OS: Windows
  • julia: v1.6.3
댓글