2

我正在使用 groupby 和 sum 快速聚合两个数据集

一个包含:

sequence shares
1        100
2        200
3        50
1        200

B 其中包含:

sequence shares
1        100
2        200
2        50
3        50

我正在使用A=A.groupby(['sequence']).sum()andB=B.groupby(['sequence']).sum()对每个序列的份额求和。然后,我想再次连接这些集合,并对序列中的份额求和。但是,我尝试使用C = concat([A,B]),现在发现我只有列共享作为索引,不能按顺序分组。C.group(['sequence']).sum()给我一个错误 KeyError: u'no item named sequence'。

我想得到的是C:

sequence shares
1        400
2        450
3        100

谁能解释这里发生了什么?我可以在 groupby().sum() 之前进行连接,但我真的想在连接之前将这些数据集缩小到更小的大小。

4

1 回答 1

5

groupby方法返回一个由 索引的数据框'sequence'。添加两个数据帧时,行按索引对齐。在这种情况下,grpA 和 grpB 的索引都是,'sequence'因此生成的 DataFrame C 将适当的行添加在一起。

A = DataFrame({'sequence': [1,2,3,1], 'shares': [100,200,50,200]})
B = DataFrame({'sequence': [1,2,2,3], 'shares': [100,200,50,50]})

grpA = A.groupby('sequence').sum()
grpB = B.groupby('sequence').sum()

In [60]: grpA + grpB
Out[60]:
          shares
sequence
1            400
2            450
3            100
于 2012-12-24T18:24:44.603 回答