我有一个DataFrame df
,其中一列名为“cond”。本专栏中的一个值是“aer”。要选择cond ==“aer”的所有行,此代码有效:
select(:(cond .== "aer"), df)
但这不是
select(:(contains(["aer"],cond)), df)
失败并显示错误:
错误:所有SubDataFrame索引必须是> 0 在/Users/seanmackesey/.julia/DataFrames/src/dataframe.jl:1007的SubDataFrame中 in sub at /Users/seanmackesey/.julia/DataFrames/src/dataframe.jl:1020 选择/Users/seanmackesey/.julia/DataFrames/src/dataframe.jl:1031
我查看了源代码但未能理解这里发生了什么。我可以在这样的表达式谓词中添加什么一般限制?
答案 0 :(得分:1)
我认为问题是contain
不是矢量化操作:
julia> contains(["aer"], ["aer", "aer", "abr"])
false
这可能意味着它没有生成有效的索引。
通常,应在select
中起作用的表达式族是生成索引向量的表达式。有一些破案,但我认为这种情况下的问题只是谓词没有产生有用的指数。