【发布时间】:2018-05-07 16:38:42
【问题描述】:
我正在从 JSON 文件中读取数组,因为我需要在将其转换为 DataFrame 以进行进一步操作之前对其执行缩减。为了争论,假设是这样
a = [Dict("A" => 1, "B" => 1, "C" => "a")
Dict("A" => 1, "B" => 2, "C" => "b")
Dict("A" => 2, "B" => 1, "C" => "b")
Dict("A" => 2, "B" => 2, "C" => "a")]
现在,如果我可以按一个或多个键(例如 A 和 C)对数组进行分组,对每个组执行更简单的 reduce,然后将行重新组合成更大的行,那么我正在执行的 reduce 将大大简化Dicts 的数组,然后我可以轻松地变成 DataFrame。
一种解决方案是将其转换为DataFrame,将其拆分为组,将各个组转换为矩阵,进行归约(有一些困难,因为现在我已经失去了通过名称引用元素的能力),将简化后的矩阵转回(Sub?)DataFrames(因为名称有些困难),并希望它们能很好地组合成一个巨大的DataFrame。
有任何更简单和/或更实用的方法吗?
编辑 在有人建议我查看Query.jl 之前,我正在运行的reduce 返回一个数组,其中行数较少,因为我压缩了某些后续行对。如果我可以用Query.jl 做这样的事情,有人可以暗示如何做,因为文档并不清楚如何“聚合”任何不返回单个值的东西。示例:
A B C
-----------
1 a
2 1 a
3 b
4 2 b
应该按“C”分组并将该表变成类似的东西
A B C
-----------
1 1 a
3 2 b
为了澄清,reduce 是有效的,我只想简化它,在压缩之前不必检查一行是否属于前一行的同一组。
【问题讨论】:
标签: arrays dictionary dataframe julia reduce