using DataFrames
df = DataFrame(A = 1:10, B = 2:2:20)
10x2 DataFrame
| Row | A | B |
|-----|----|----|
| 1 | 1 | 2 |
| 2 | 2 | 4 |
| 3 | 3 | 6 |
| 4 | 4 | 8 |
| 5 | 5 | 10 |
...
...
是否可以使用值列表来对数据帧进行子集,例如
df[df[:A] .in [3,4], :]
如果列表很小,可以通过
完成df[(df[:A] .== 3) | (df[:A] .== 4), :]
但我想知道是否有办法为大型值列表
执行此操作答案 0 :(得分:3)
julia> df = DataFrame(x = 1:3:30, y = [2, 1, 2,1,3,4,5,3,3,3])
10x2 DataFrames.DataFrame
| Row | x | y |
|-----|----|---|
| 1 | 1 | 2 |
| 2 | 4 | 1 |
| 3 | 7 | 2 |
| 4 | 10 | 1 |
| 5 | 13 | 3 |
| 6 | 16 | 4 |
| 7 | 19 | 5 |
| 8 | 22 | 3 |
| 9 | 25 | 3 |
| 10 | 28 | 3 |
julia> df[findin(df[:y],[1,3]),:]
6x2 DataFrames.DataFrame
| Row | x | y |
|-----|----|---|
| 1 | 4 | 1 |
| 2 | 10 | 1 |
| 3 | 13 | 3 |
| 4 | 22 | 3 |
| 5 | 25 | 3 |
| 6 | 28 | 3 |
答案 1 :(得分:0)
上面接受的答案不再起作用。 所以这是2019年的工作方式:
# by column name
julia> df[ [x in [3,4] for x in df[:A]] ,:]
2×2 DataFrame
│ Row │ A │ B │
│ │ Int64 │ Int64 │
├─────┼───────┼───────┤
│ 1 │ 3 │ 6 │
│ 2 │ 4 │ 8 │
# or by column number
julia> df[ [x in [3,4] for x in df[:1]] ,:]
2×2 DataFrame
│ Row │ A │ B │
│ │ Int64 │ Int64 │
├─────┼───────┼───────┤
│ 1 │ 3 │ 6 │
│ 2 │ 4 │ 8 │