df 是一个 120 万行的 DataFrame
valid 是一个包含 16000 个要过滤的有效值的数组
我尝试对过滤器使用列表理解,但由于搜索两个数组,速度非常慢。df[[i in valid for i in df[:match],:]
什么是更快的方法来做到这一点?用在哪里? “过滤”功能?
最佳答案
搜索集合将非常快:
const validset = Set(valid)
filter((x)-> x.match in validset,df)
一些表现:julia> df=DataFrame(match=rand(1:(10^8),10^6));
julia> valid = collect(1:1_000_000); validset=Set(valid)
julia> @btime filter((x)-> x.match in $validset,$df)
173.341 ms (3999506 allocations: 61.30 MiB)
或者 Bogumil 推荐的更快的版本:julia> @btime filter(:match => in($validset),$df)
37.500 ms (23 allocations: 282.44 KiB)
关于Julia - 基于值数组过滤的最快方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64599003/