如何聚合 `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]
我有一个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]