julia dataframe - 按值列表对列进行子集化

muo*_*uon 4 data-manipulation subset dataframe julia

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 |
...
...
Run Code Online (Sandbox Code Playgroud)

是否可以通过使用值列表来对数据帧进行子集化,例如

df[df[:A] .in [3,4], :]
Run Code Online (Sandbox Code Playgroud)

如果列表很小,可以通过以下方式完成

df[(df[:A] .== 3) |  (df[:A] .== 4), :]
Run Code Online (Sandbox Code Playgroud)

但我想知道是否有办法对大量值执行此操作

tuc*_*son 5

上面接受的答案不再有效。\n所以这是 2019 年有效的方法:

\n\n
# by column name\n\njulia> df[ [x in [3,4] for x in df[:A]] ,:]\n2\xc3\x972 DataFrame\n\xe2\x94\x82 Row \xe2\x94\x82 A     \xe2\x94\x82 B     \xe2\x94\x82\n\xe2\x94\x82     \xe2\x94\x82 Int64 \xe2\x94\x82 Int64 \xe2\x94\x82\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xbc\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xbc\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xa4\n\xe2\x94\x82 1   \xe2\x94\x82 3     \xe2\x94\x82 6     \xe2\x94\x82\n\xe2\x94\x82 2   \xe2\x94\x82 4     \xe2\x94\x82 8     \xe2\x94\x82\n\n# or by column number\n\njulia> df[ [x in [3,4] for x in df[:1]] ,:]\n2\xc3\x972 DataFrame\n\xe2\x94\x82 Row \xe2\x94\x82 A     \xe2\x94\x82 B     \xe2\x94\x82\n\xe2\x94\x82     \xe2\x94\x82 Int64 \xe2\x94\x82 Int64 \xe2\x94\x82\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xbc\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xbc\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xa4\n\xe2\x94\x82 1   \xe2\x94\x82 3     \xe2\x94\x82 6     \xe2\x94\x82\n\xe2\x94\x82 2   \xe2\x94\x82 4     \xe2\x94\x82 8     \xe2\x94\x82\n
Run Code Online (Sandbox Code Playgroud)\n