Julia 编程语言中基于条件的列选择

Dan*_*ski 4 julia

我对 Julia 比较陌生 - 我想知道如何根据条件、eq、平均值大于 0 的所有列来选择 DataFrames.jl 中的某些列。

PaS*_*STE 6

基于按列条件选择列的一种方法是使用 将该条件映射到列上eachcol,然后使用生成的 Bool 数组作为 DataFrame 上的列选择器:

\n
julia> using DataFrames, Statistics\n\njulia> df = DataFrame(a=randn(10), b=randn(10) .- 1, c=randn(10) .+ 1, d=randn(10))\n10\xc3\x974 DataFrame\n Row \xe2\x94\x82 a          b            c           d          \n     \xe2\x94\x82 Float64    Float64      Float64     Float64    \n\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xbc\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\n   1 \xe2\x94\x82 -1.05612   -2.01901      1.99614    -2.08048\n   2 \xe2\x94\x82 -0.37359    0.00750529   2.11529     1.93699\n   3 \xe2\x94\x82 -1.15199   -0.812506    -0.721653   -0.286076\n   4 \xe2\x94\x82  0.992366  -2.05898      0.474682   -0.210283\n   5 \xe2\x94\x82  0.206846  -0.922274     1.87723    -0.403679\n   6 \xe2\x94\x82 -1.01923   -1.4401      -0.0769749   0.0557395\n   7 \xe2\x94\x82  1.99409   -0.463743     1.83163    -0.585677\n   8 \xe2\x94\x82  2.21445    0.658119     2.33056    -1.01474\n   9 \xe2\x94\x82  0.918917  -0.371214     1.76301    -0.234561\n  10 \xe2\x94\x82 -0.839345  -1.09017      1.38716    -2.82545\n\njulia> f(x) = mean(x) > 0\nf (generic function with 1 method)\n\njulia> df[:, map(f, eachcol(df))]\n10\xc3\x972 DataFrame\n Row \xe2\x94\x82 a          c          \n     \xe2\x94\x82 Float64    Float64    \n\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xbc\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\n   1 \xe2\x94\x82 -1.05612    1.99614\n   2 \xe2\x94\x82 -0.37359    2.11529\n   3 \xe2\x94\x82 -1.15199   -0.721653\n   4 \xe2\x94\x82  0.992366   0.474682\n   5 \xe2\x94\x82  0.206846   1.87723\n   6 \xe2\x94\x82 -1.01923   -0.0769749\n   7 \xe2\x94\x82  1.99409    1.83163\n   8 \xe2\x94\x82  2.21445    2.33056\n   9 \xe2\x94\x82  0.918917   1.76301\n  10 \xe2\x94\x82 -0.839345   1.38716\n
Run Code Online (Sandbox Code Playgroud)\n