使用DataFrames.jl获取一列的元素以及另一列的某些值

时间:2019-12-19 12:28:35

标签: dataframe julia

在数据框df中有:a:b列,如何获取列:a中的所有元素,例如b = 0.5? 可以单独使用DataFrames还是需要meta包?

1 个答案:

答案 0 :(得分:1)

df[df.b .== 5, :]

示例

julia> df = DataFrame(a=11:17, b=vcat([5,5],1:5))
7×2 DataFrame
│ Row │ a     │ b     │
│     │ Int64 │ Int64 │
├─────┼───────┼───────┤
│ 1   │ 11    │ 5     │
│ 2   │ 12    │ 5     │
│ 3   │ 13    │ 1     │
│ 4   │ 14    │ 2     │
│ 5   │ 15    │ 3     │
│ 6   │ 16    │ 4     │
│ 7   │ 17    │ 5     │

julia> df[df.b .== 5, :]
3×2 DataFrame
│ Row │ a     │ b     │
│     │ Int64 │ Int64 │
├─────┼───────┼───────┤
│ 1   │ 11    │ 5     │
│ 2   │ 12    │ 5     │
│ 3   │ 17    │ 5     │

如果只需要列a

julia> df[df.b .== 5, :].a
3-element Array{Int64,1}:
 11
 12
 17

另一种选择是将filter与lambda函数一起使用(这会更快一些,并且使用更少的内存):

julia> filter(row -> row[:b] == 5, df)
3×2 DataFrame
│ Row │ a     │ b     │
│     │ Int64 │ Int64 │
├─────┼───────┼───────┤
│ 1   │ 11    │ 5     │
│ 2   │ 12    │ 5     │
│ 3   │ 17    │ 5     │