返回“DataFrames.jl”中的最大总和?

Lik*_*han 5 julia dataframes.jl

假设我的 DataFrame 有两列vg。首先,我按列对 DataFrame 进行分组g并计算列的总和v。其次,我使用了该功能maximum来检索最大总和。我想知道是否可以一步检索该值?谢谢。

\n
julia> using Random\n\njulia> Random.seed!(1)\nTaskLocalRNG()\n\njulia> dt = DataFrame(v = rand(15), g = rand(1:3, 15))\n15\xc3\x972 DataFrame\n Row \xe2\x94\x82 v          g     \n     \xe2\x94\x82 Float64    Int64 \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\n   1 \xe2\x94\x82 0.0491718      3\n   2 \xe2\x94\x82 0.119079       2\n   3 \xe2\x94\x82 0.393271       2\n   4 \xe2\x94\x82 0.0240943      3\n   5 \xe2\x94\x82 0.691857       2\n   6 \xe2\x94\x82 0.767518       2\n   7 \xe2\x94\x82 0.087253       1\n   8 \xe2\x94\x82 0.855718       1\n   9 \xe2\x94\x82 0.802561       3\n  10 \xe2\x94\x82 0.661425       1\n  11 \xe2\x94\x82 0.347513       2\n  12 \xe2\x94\x82 0.778149       3\n  13 \xe2\x94\x82 0.196832       1\n  14 \xe2\x94\x82 0.438058       2\n  15 \xe2\x94\x82 0.0113425      1\n\njulia> gdt = combine(groupby(dt, :g), :v => sum => :v)\n3\xc3\x972 DataFrame\n Row \xe2\x94\x82 g      v       \n     \xe2\x94\x82 Int64  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\n   1 \xe2\x94\x82     1  1.81257\n   2 \xe2\x94\x82     2  2.7573\n   3 \xe2\x94\x82     3  1.65398\n\njulia> maximum(gdt.v)\n2.7572966050340257\n\n\n
Run Code Online (Sandbox Code Playgroud)\n

Prz*_*fel 2

我不确定这是否是您的意思,但您可以使用以下命令一步检索g和的值:v

julia> v, g = findmax(x-> (x.v, x.g), eachrow(gdt))[1]
(4.343050512360169, 3)
Run Code Online (Sandbox Code Playgroud)