我使用groupby和sum快速聚合accros两个数据集
其中包含:
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()
和B=B.groupby(['sequence']).sum()
对每个序列中的份额求和。然后我想再次连接这些集合并对序列中的共享进行求和。但是,我尝试使用C = concat([A,B])
,现在发现我只将列共享作为索引,不能按顺序分组。 C.group(['sequence']).sum()
给了我一个错误KeyError:你没有名为sequence'的项目。
我想知道的是C:
sequence shares
1 400
2 450
3 100
任何人都可以解释这里发生了什么吗?我可以在groupby()。sum()之前连接,但我真的想在连接它们之前将这些数据集缩小到更小的大小。
答案 0 :(得分: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