줄리아 데이터프레임에서 NaN을 0으로 바꾸는 법
개요
특정 값으로 바꾸는 방법은 한 열씩 바꾸기 때문에 불편하고, 데이터프레임 전체에서 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
─────┼───────────────────────────
1 │ 5.0 Inf 7.0
2 │ Inf 8.0 Inf
3 │ 4.0 1.0 4.0
가령 위의 데이터 프레임에서 Inf
를 0
으로 대체하고 싶다면 다음과 같이 단 한 줄로 바꿀 수 있다.
julia> ifelse.(isinf.(df), 0, df)
3×3 DataFrame
Row │ x1 x2 x3
│ Float64 Float64 Float64
─────┼───────────────────────────
1 │ 5.0 0.0 7.0
2 │ 0.0 8.0 0.0
3 │ 4.0 1.0 4.0
당연하지만 ifelse.(isinf.(df), 0, df)
에서 isinf
를 isnan
으로 교체하면 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