按行合并或组合行中的json值

时间:2015-02-26 20:57:24

标签: python json pandas

我有一个带有json数组列的DataFrame

id | group | data
---+-------+------
 0 |   100 | [{'a':0,'b':0},{'a':0,'b':1},...]
 1 |   100 | [{'a':1,'b':0},{'a':1,'b':1},...]
 2 |   100 | [{'a':2,'b':0},{'a':2,'b':1},...]
 3 |   101 | [{'a':0,'b':0},{'a':0,'b':1},...]
 4 |   101 | [{'a':1,'b':0},{'a':1,'b':1},...]
 5 |   100 | [{'a':2,'b':0},{'a':2,'b':1},...]

我对组合各组的json数据感兴趣

id | group | data
---+-------+------
 0 |   100 | [{'a':0,'b':0},{'a':0,'b':1},...,{'a':1,'b':0},{'a':1,'b':1},...]
 1 |   101 | [{'a':0,'b':0},{'a':0,'b':1},...,{'a':1,'b':0},{'a':1,'b':1},...]
 2 |   102 | [{'a':0,'b':0},{'a':0,'b':1},...,{'a':1,'b':0},{'a':1,'b':1},...]

不幸的是,我无法找到有效的方法来实现这一目标。

我认为我应该可以使用mydata.groupby(['group'])来生成分组数据然后我不知道从那里去哪里

1 个答案:

答案 0 :(得分:0)

import itertools
mydata = mydata.groupby('group')['data'].agg(lambda s: list(itertools.chain(*[l for l in s])))

不是很漂亮,但应该有效