2013-10-10 25 views
1

我有一個名爲「cond」的列的DataFrame df。本專欄中的其中一個值是「aer」。要選擇所有COND == 「AER」 行,此代碼的工作:使用`contains`功能從Julia Dataframe中選擇

select(:(cond .== "aer"), df) 

但這並不

select(:(contains(["aer"],cond)), df) 

它失敗,出現錯誤:

ERROR: all SubDataFrame indices must be > 0 in SubDataFrame at /Users/seanmackesey/.julia/DataFrames/src/dataframe.jl:1007 in sub at /Users/seanmackesey/.julia/DataFrames/src/dataframe.jl:1020 in select at /Users/seanmackesey/.julia/DataFrames/src/dataframe.jl:1031

我看着源頭,但不明白這裏發生了什麼。我可以在這樣的表達式謂詞中放置什麼是一般限制?

回答

1

我認爲這個問題是contain不是矢量操作:

julia> contains(["aer"], ["aer", "aer", "abr"]) 
false 

這可能意味着它沒有產生有效的指標。

通常,應該在select中工作的表達式族是那些生成索引向量的表達式。有一些破損的情況,但我相信這種情況下的問題只是謂詞不產生有用的索引。

+0

我覺得有一個錯誤包含 - >包含。顯然,我無法編輯你的答案,因爲修復不足6個字符。 – ivarne

+0

@JohnMylesWhite我看到 - 有沒有一種簡單的方法來採取任何表達式,將返回true/false爲每行幷包裝它,以便它可以返回索引的向量?我試着做'@ vectorize_2arg任何包含',但這不起作用。 –