dataframe - Julia 中的矢量化 "in"函数?

标签 dataframe vectorization julia

我经常想遍历数据帧的一个长数组或列,并且对于每个项目,查看它是否是另一个数组的成员。而不是做

giant_list = ["a", "c", "j"]
good_letters = ["a", "b"]
isin = falses(size(giant_list,1))
for i=1:size(giant_list,1)
    isin[i] = giant_list[i] in good_letters
end

在 julia 中是否有任何矢量化(双重矢量化?)方法来做到这一点?与基本运算符类比,我想做类似的事情
isin = giant_list .in good_letters

我意识到这可能是不可能的,但我只是想确保我没有遗漏一些东西。我知道我可能可以使用 DataStructures 中的 DefaultDict 来做类似的事情,但对 base 一无所知。

最佳答案

indexin function 执行类似于您想要的操作:

indexin(a, b)

Returns a vector containing the highest index in b for each value in a that is a member of b. The output vector contains 0 wherever a is not a member of b.


由于您希望 giant_list 中的每个元素都有一个 bool 值(而不是 good_letters 中的索引),您可以简单地执行以下操作:
julia> indexin(giant_list, good_letters) .> 0
3-element BitArray{1}:
  true
 false
 false
implementation of indexin 非常简单,并且指出了如果您不关心 b 中的索引如何优化它的方法。 :
function vectorin(a, b)
    bset = Set(b)
    [i in bset for i in a]
end
只能将有限的一组名称用作中缀运算符,因此不可能将其用作中缀运算符。

关于dataframe - Julia 中的矢量化 "in"函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29661315/

相关文章:

matlab - 批量/并行进行一维卷积

java - 如何使用 Java Streams API 在两个相同维度的列表之间进行元素明智的乘法

julia - Julia => 的目的是什么

Julia 中的求和符号?

c++ - 我的代码中的 “Peel/Remainder”循环无效

Julia 每次都会编译脚本吗?

python - 合并列数据框

python - 在 python 中的数据帧上使用 group by 之后,如何过滤数据帧以返回特定类型的记录?

scala - 将结构数组分解为 Spark 中的列

python - 如何删除最后一行中具有零值的 Pandas DataFrame 列