줄리아 데이터프레임에서 NaN을 0으로 바꾸는 법

줄리아 데이터프레임에서 NaN을 0으로 바꾸는 법

How to Replace NaN of Dataframe to 0 in julia

개요

특정 값으로 바꾸는 방법은 한 열씩 바꾸기 때문에 불편하고, 데이터프레임 전체에서 NaN을 처리할 땐 더 좋은 트릭을 사용해봄직하다.

코드

julia> df = DataFrame(rand(1:9,3,3), :auto) ./ DataFrame(rand(0:1,3,3), :auto)
3×3 DataFrame
 Row │ x1       x2       x3      
     │ Float64  Float64  Float64
─────┼───────────────────────────
   15.0    Inf        7.0
   2 │   Inf        8.0    Inf
   34.0      1.0      4.0

가령 위의 데이터 프레임에서 Inf0으로 대체하고 싶다면 다음과 같이 단 한 줄로 바꿀 수 있다.

julia> ifelse.(isinf.(df), 0, df)
3×3 DataFrame
 Row │ x1       x2       x3      
     │ Float64  Float64  Float64
─────┼───────────────────────────
   15.0      0.0      7.0
   20.0      8.0      0.0
   34.0      1.0      4.0

당연하지만 ifelse.(isinf.(df), 0, df) 에서 isinfisnan으로 교체하면 NaN을 처리하고, 0을 고쳐서 어떤 값으로 보낼지 바꿀 수 있다.

전체코드

using DataFrames, Random
Random.seed!(0)

df = DataFrame(rand(1:9,3,3), :auto) ./ DataFrame(rand(0:1,3,3), :auto)
ifelse.(isinf.(df), 0, df)

같이보기

환경

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