2015-12-14 3 views
3
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 | 
... 
... 

это возможно подмножество dataframe с помощью списка значений, что-то вродеджулия dataframe - Подменю колонки по списку значений

df[df[:A] .in [3,4], :] 

если список невелик, это может быть сделано путем

df[(df[:A] .== 3) | (df[:A] .== 4), :] 

, но мне интересно, если есть способ сделать это для большого списка значений

+1

Возможный дубликат [Векторизованный "в функции в julia?] (Http://stackoverflow.com/questions/29661315/vectorized-in-function-in-julia) –

+2

' df [[x in [3,4] для x в df [: A]]::] является одним эквивалентом. Легко адаптируется к другим наборам и условиям. –

+0

Функция vectorin Matt B невероятно полезна, и понимание двойного массива не очень интуитивно для новых пользователей julia. Я думаю, он должен быть добавлен в Base. – ARM

ответ

4
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 |