我在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)
小智 7
接受的答案很好地回答了所述的问题.
但是,如果您想要将DataFrame转换为数组的唯一理由是过滤它,那么可能值得研究可用于直接过滤DataFrame对象的方法.有关示例,请参阅https://dataframesjl.readthedocs.io/en/latest/subsets.html和https://dataframesjl.readthedocs.io/en/latest/split_apply_combine.html.
(如果这个评论更适合评论而不是答案,请提前抱歉 - 还没有足够的声誉在这里发表评论.)
convert
现在,该方法的更新已convert(::Type{Array}, df::AbstractDataFrame)
被弃用,以支持:
using DataFrames
convert(Matrix, df)
Run Code Online (Sandbox Code Playgroud)
这相当于 Matrix(df)