3

我有一个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) group byk和 2) 汇总字典中的计数。所需的输出:

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

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

4

1 回答 1

3

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

>>> 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]
于 2020-09-04T21:54:25.813 回答