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

4

我相对于Julia比较新 - 我想知道如何基于条件在 DataFrames.jl 中选择某些列,例如所有平均值大于0的列。

1个回答

6

基于列的条件选择列的一种方法是使用eachcol将该条件映射到列,然后将结果布尔数组用作DataFrame中的列选择器:

julia> using DataFrames, Statistics

julia> df = DataFrame(a=randn(10), b=randn(10) .- 1, c=randn(10) .+ 1, d=randn(10))
10×4 DataFrame
 Row │ a          b            c           d          
     │ Float64    Float64      Float64     Float64    
─────┼────────────────────────────────────────────────
   1 │ -1.05612   -2.01901      1.99614    -2.08048
   2 │ -0.37359    0.00750529   2.11529     1.93699
   3 │ -1.15199   -0.812506    -0.721653   -0.286076
   40.992366  -2.05898      0.474682   -0.210283
   50.206846  -0.922274     1.87723    -0.403679
   6 │ -1.01923   -1.4401      -0.0769749   0.0557395
   71.99409   -0.463743     1.83163    -0.585677
   82.21445    0.658119     2.33056    -1.01474
   90.918917  -0.371214     1.76301    -0.234561
  10 │ -0.839345  -1.09017      1.38716    -2.82545

julia> f(x) = mean(x) > 0
f (generic function with 1 method)

julia> df[:, map(f, eachcol(df))]
10×2 DataFrame
 Row │ a          c          
     │ Float64    Float64    
─────┼───────────────────────
   1 │ -1.05612    1.99614
   2 │ -0.37359    2.11529
   3 │ -1.15199   -0.721653
   40.992366   0.474682
   50.206846   1.87723
   6 │ -1.01923   -0.0769749
   71.99409    1.83163
   82.21445    2.33056
   90.918917   1.76301
  10 │ -0.839345   1.38716

df[:, (x->mean(x)>0).(eachcol(df)) ] 或者如果您不想复制数据 df[!, (x->mean(x)>0).(eachcol(df)) ] - Przemyslaw Szufel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接