Lik*_*han 5 julia dataframes.jl
假设我的 DataFrame 有两列v和g。首先,我按列对 DataFrame 进行分组g并计算列的总和v。其次,我使用了该功能maximum来检索最大总和。我想知道是否可以一步检索该值?谢谢。
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\nRun Code Online (Sandbox Code Playgroud)\n
我不确定这是否是您的意思,但您可以使用以下命令一步检索g和的值:v
julia> v, g = findmax(x-> (x.v, x.g), eachrow(gdt))[1]
(4.343050512360169, 3)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
169 次 |
| 最近记录: |