来自 Julia 中 Dataframe 列的向量

Vector from Dataframe Column in Julia

我有一个DataFrame

df = DataFrame(x = 1:3, y = 4:6)

3×2 DataFrame
 Row │ x      y     
     │ Int64  Int64 
─────┼──────────────
   1 │     1      4
   2 │     2      5
   3 │     3      6

如何提取其中一列作为 Vector

我知道我可以做到 df[:,:x]df.x,但是有没有办法用函数来做到这一点?我问的原因是我使用 Chain.jl 包并想做类似

的事情
@chain df begin
    some_manipulations_here
    pull(:x)
end

好的,所以一种解决方案是

@chain df begin
    some_manipulations_here
    _ |> df -> df.x
end

但我其实希望有人能想出一个更干净的解决方案。

您可以执行以下操作之一:

julia> df = DataFrame(x = 1:3, y = 4:6)
3×2 DataFrame
 Row │ x      y
     │ Int64  Int64
─────┼──────────────
   1 │     1      4
   2 │     2      5
   3 │     3      6

julia> @chain df begin
       _.x
       end
3-element Vector{Int64}:
 1
 2
 3

julia> @chain df begin
       getproperty(:x) # same as above
       end
3-element Vector{Int64}:
 1
 2
 3

julia> @chain df begin
       getindex(!, :x) # also _[!, :x]
       end
3-element Vector{Int64}:
 1
 2
 3

julia> @chain df begin
       getindex(:, :x) # also _[:, :x]
       end
3-element Vector{Int64}:
 1
 2
 3

可能是第一个选项(_.x 在实践中是最简单的。

我已经展示了其他选项以强调所有特殊语法,如 df.xdf[!, :x] 实际上都是函数调用,特殊语法只是为了方便。