2012-12-24 174 views
2

我使用GROUPBY和金額迅速聚集accros兩個數據集熊貓GROUPBY對象

一個其中包含:

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:你沒有項目命名序列'。

我想出去是C:

sequence shares 
1  400 
2  450 
3  100 

任何人能解釋這到底是怎麼回事呢?我可以在groupby()。sum()之前進行連接,但我真的想在連接它們之前將這些數據集敲擊到較小的大小。

回答

4

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 
+0

謝謝!非常感謝 – DrewH

+0

如果這個答案適合您,請接受它作爲解決方案。謝謝! – Zelazny7