Julia - 如何将DataFrame转换为Array?

5

我有一个只包含数值的DataFrame。现在,我想将此DataFrame的所有值提取为数组。我该如何做?我知道对于单个列,如果我执行df[!,:x1],那么输出是一个数组。但是如何对所有列执行此操作?

3个回答

8
最简短的形式似乎是:
julia> Matrix(df)
3×2 Array{Float64,2}:
 0.723835  0.307092
 0.02993   0.0147598
 0.141979  0.0271646

在某些情况下,您可能需要指定类型,例如Matrix{Union{Missing, Float64}}(df)

4

您也可以使用Tables API,特别是Tables.matrix函数:

julia> df = DataFrame(x=rand(3), y=rand(3))
3×2 DataFrame
 Row │ x          y        
     │ Float64    Float64  
─────┼─────────────────────
   10.33002    0.180934
   20.834302   0.470976
   30.0916842  0.45172

julia> Tables.matrix(df)
3×2 Array{Float64,2}:
 0.33002    0.180934
 0.834302   0.470976
 0.0916842  0.45172

3
convert(Matrix, df[:,:])

试试这个


谢谢,这个方法确实可行。但我想知道是否有一种在DataFrames.jl上直接执行此操作的方法,而不必显式转换它。 - Davi Barreira
1
目前不支持“convert”操作。请使用“Matrix”构造函数。 - Bogumił Kamiński

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接