假设我创建以下数据框
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,但找不到解决方案。我可以得到提示吗?
要从每个组中获取第三行,groupby首先然后combine使用索引:
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\nRun Code Online (Sandbox Code Playgroud)\n(我最初误读了这个问题并建议逻辑索引,例如df[df.B .== 3, :])