选择分组数据框中每个组的第 n 个元素

use*_*278 3 dataframe julia

假设我创建以下数据框

using DataFrames
df = DataFrame(A = rand(500), B = repeat(1:10, inner=50), C = 1:500)
Run Code Online (Sandbox Code Playgroud)

我可以做一个groupby

grouped_df = groupby(df,"B")
Run Code Online (Sandbox Code Playgroud)

我最终会分成 10 组。例如,我如何选择每组的第三个元素,并将它们组合成一个新的数据框?也就是说,我想要一个 10 行的新数据框,每行是每个组的第三个元素?

我调查过combine,但找不到解决方案。我可以得到提示吗?

Mat*_* B. 5

要从每个组中获取第三行,groupby首先然后combine使用索引:

\n
julia> combine(groupby(df, :B), x->x[3, :])\n10\xc3\x973 DataFrame\n Row \xe2\x94\x82 B      A          C\n     \xe2\x94\x82 Int64  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\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  0.196572       3\n   2 \xe2\x94\x82     2  0.539942      53\n   3 \xe2\x94\x82     3  0.243455     103\n   4 \xe2\x94\x82     4  0.837491     153\n   5 \xe2\x94\x82     5  0.672861     203\n   6 \xe2\x94\x82     6  0.0220219    253\n   7 \xe2\x94\x82     7  0.303417     303\n   8 \xe2\x94\x82     8  0.409596     353\n   9 \xe2\x94\x82     9  0.165928     403\n  10 \xe2\x94\x82    10  0.752038     453\n
Run Code Online (Sandbox Code Playgroud)\n

(我最初误读了这个问题并建议逻辑索引,例如df[df.B .== 3, :]

\n