logo

JuliaのデータフレームでNaNを0に置き換える方法 📂ジュリア

Juliaのデータフレームで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

例えば、上のデータフレームでInf0に置換したい場合、次のようにたった一行で変更できる。

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)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