Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何聚合'dict'类型的列`_Python_Datatable_Py Datatable - Fatal编程技术网

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

Python 如何聚合'dict'类型的列`,python,datatable,py-datatable,Python,Datatable,Py Datatable,我有一个框架,如下所示: 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 ▪▪▪▪ ▪▪▪▪▪▪▪▪

我有一个
框架
,如下所示:

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}

是否可以用最新的<代码> PyDatabase(V0.11)?

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

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

你最好修改字典,而不是dataframe@deadshot你能详细说明你的观点吗?原始数据存储为
pandas.DataFrame
(列类型完全相同),我可以使用
DataFrame.group
实现我的目标。但是,由于数据量太大,我觉得很痛苦。这就是为什么我看了一下
pydatatable
。谢谢@Pasha。是的,我应该先考虑扩充字典。