如何聚合'dict'类型的列`

2024-06-17 18:47:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个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)实现


Tags: 字典dtframe计数pydatatable
1条回答
网友
1楼 · 发布于 2024-06-17 18:47:35

如果你有一个大数据集,那么考虑把所有字典扩展成一个框架:

>>> 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]

相关问题 更多 >