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。是的,我应该先考虑扩充字典。