1

我有一个df名为“cond”的列的 DataFrame。此列中的值之一是“aer”。要使用 cond == "aer" 选择所有行,此代码有效:

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

但这并不

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

它失败并出现错误:

错误:在 /Users/seanmackesey/.julia/DataFrames/src/dataframe.jl:1020 中的 /Users/seanmackesey/.julia/DataFrames/src/dataframe.jl:1007 中的子数据帧中的所有子数据帧索引必须 > 0在 /Users/seanmackesey/.julia/DataFrames/src/dataframe.jl:1031 处选择

我查看了源代码,但无法理解这里发生了什么。我可以在这样的表达式谓词中添加什么的一般限制是什么?

4

1 回答 1

1

我认为问题在于这contain不是矢量化操作:

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

这可能意味着它没有生成有效的索引。

通常,应该使用的表达式族select是那些生成索引向量的表达式。有一些破碎的案例,但我认为这种情况下的问题只是谓词没有产生有用的索引。

于 2013-10-11T12:30:28.697 回答