首页 > 解决方案 > 从另一个 DataFrame 中提取单独的分组 DataFrame

问题描述

将组提取到单独的最佳/最惯用的方法是DataFrames什么?这在很多方面都很有用(例如,为每个组训练单独的模型、每个组的数据可视化、保存数据的特定子集等)

此类问题的一个最小示例可能是:

using DataFrames
df = DataFrame(Dict(:groups => ["A", "B", "A"],
                    :val1 => [1, 2, -4],
                    :val2 => [3, 9, 1]))

理想的输出是这样的:

group_dict = Dict("A" => DataFrame(Dict(:val1 => [1, -4], :val2 => [3, 1])),
                  "B" => DataFrame(Dict(:val1 => [2], :val2 => [9])))

一个干净的解决方案是利用Query.jl's @groupby

using Query
df |> @groupby(_.groups) |> ?? |> Dict

但是,我被困在最后一步(即将它变成字典或其他命名集合)。

标签: julia

解决方案


您可以使用DataFrames.groupby(df,:groups)返回一个 GroupedDataFrame,它是 SubDataFrames 的集合。


推荐阅读