来自 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.x
或 df[!, :x]
实际上都是函数调用,特殊语法只是为了方便。
我有一个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.x
或 df[!, :x]
实际上都是函数调用,特殊语法只是为了方便。