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

3
假设我创建了以下数据框:
using DataFrames
df = DataFrame(A = rand(500), B = repeat(1:10, inner=50), C = 1:500)

我可以使用 groupby 进行分组:

grouped_df = groupby(df,"B")

我最终会得到10个组。我怎样才能选择每个组的第三个元素,并将它们合并成一个新的数据框?也就是说,我想要一个新的数据框,有10行,每一行是每个组的第三个元素?

我已经研究了combine,但找不到解决方案。我可以得到一些提示吗?

1个回答

4
要获取每个组的第三行,首先要进行 groupby 操作,然后使用索引进行 combine

julia> combine(groupby(df, :B), x->x[3, :])
10×3 DataFrame
 RowB      A          CInt64  Float64    Int64
─────┼─────────────────────────
   11  0.196572       3
   22  0.539942      53
   33  0.243455     103
   44  0.837491     153
   55  0.672861     203
   66  0.0220219    253
   77  0.303417     303
   88  0.409596     353
   99  0.165928     403
  1010  0.752038     453

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


你基本上得到了第三组。然而,我想要获取每个组的第三个元素。 - user1691278
啊,我误解了。 - mbauman
但是也许我的编辑也不正确?你需要50行吗? - mbauman

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