如何聚合 `dict` 类型的列

How to aggregate columns of type `dict`

我有一个Frame如下:

x = dt.Frame(k = [1, 1, 2], 
             v = [{'a':1, 'b':2}, {'a':3}, {'b':4}])

看起来像这样:

k       v
▪▪▪▪    ▪▪▪▪▪▪▪▪
1       {'a': 1, 'b': 2}
1       {'a': 3}
2       {'b': 4}

我想做的是 1) 按 k 分组,以及 2) 汇总字典中的计数。 期望的输出:

k       v
▪▪▪▪    ▪▪▪▪▪▪▪▪
1       {'a': 4, 'b': 2}
2       {'b': 4}

是否可以用最新的pydatatable(v0.11)实现?

如果您有一个大型数据集,请考虑将所有词典扩展到一个框架中:

>>> DT = dt.cbind(dt.Frame(_key=[1,1,2]), 
                  dt.Frame([{'a':1, 'b':2}, {'a':3}, {'b':4}]))
>>> DT
   | _key   a   b
-- + ----  --  --
 0 |    1   1   2
 1 |    1   3  NA
 2 |    2  NA   4

[3 rows x 3 columns]

之后,分组就很容易了:

>>> from datatable import sum, f, by
>>> DT[:, sum(f[:]), by(f._key)]
   | _key   a   b
-- + ----  --  --
 0 |    1   4   2
 1 |    2   0   4

[2 rows x 3 columns]