在julia中将带有标签的数据帧转换为数组

mj *_*eri 14 julia

我在Julia中有带标题的数据框,但我需要将其转换为数组进行一些过滤,有一些类似的帖子,人们建议使用:

iris[:, 1:3]
Run Code Online (Sandbox Code Playgroud)

从数据帧获取数组,但此方法不适用于带有标题的数据框,任何建议我该怎么办?

数据帧格式:

FP | C1 | Cz | C2 ....
*  | *  | *  | *  ....
.  | .  | .  | .  ....
.  | .  | .  | .  ....
.  | .  | .  | .  ....
Run Code Online (Sandbox Code Playgroud)

Mic*_*ard 18

你试过convert(Matrix, iris[:,1:3])吗?例如

julia> using DataFrames

julia> df = DataFrame(a = 1:4, b = 1:4, c = randn(4), d = randn(4))
4×4 DataFrame
? Row ? a     ? b     ? c        ? d          ?
?     ? Int64 ? Int64 ? Float64  ? Float64    ?
???????????????????????????????????????????????
? 1   ? 1     ? 1     ? 1.72172  ? -0.377729  ?
? 2   ? 2     ? 2     ? 0.206415 ? -0.266014  ?
? 3   ? 3     ? 3     ? 1.03785  ? -0.0317582 ?
? 4   ? 4     ? 4     ? 0.632473 ? -0.409014  ?

julia> convert(Matrix, df[:,1:3])
4×3 Array{Float64,2}:
 1.0  1.0  1.72172
 2.0  2.0  0.206415
 3.0  3.0  1.03785
 4.0  4.0  0.632473
Run Code Online (Sandbox Code Playgroud)

  • 在Julia 1.0中,它现在提示将其更改为`convert(Matrix,`而不是`convert(Array,`)。 (4认同)

小智 7

接受的答案很好地回答了所述的问题.

但是,如果您想要将DataFrame转换为数组的唯一理由是过滤它,那么可能值得研究可用于直接过滤DataFrame对象的方法.有关示例,请参阅https://dataframesjl.readthedocs.io/en/latest/subsets.htmlhttps://dataframesjl.readthedocs.io/en/latest/split_apply_combine.html.

(如果这个评论更适合评论而不是答案,请提前抱歉 - 还没有足够的声誉在这里发表评论.)


cat*_*ure 7

convert现在,该方法的更新已convert(::Type{Array}, df::AbstractDataFrame)被弃用,以支持:

using DataFrames
convert(Matrix, df)
Run Code Online (Sandbox Code Playgroud)

这相当于 Matrix(df)


Tyl*_* R. 6

这在 Julia 0.7 及更高版本中不起作用。相反,请尝试Matrix(df)查看此处的教程。