2012-12-24 18 views
2

내가 신속하게 집계 accros 두 개의 데이터가팬더 GROUPBY는

를 설정 GROUPBY와 합을 사용하고 개체를 포함하는 A :

sequence shares 
1  100 
2  200 
2  50 
3  50 

I를 : 포함

sequence shares 
1  100 
2  200 
3  50 
1  200 

B를 A=A.groupby(['sequence']).sum()B=B.groupby(['sequence']).sum()을 사용하여 각 시퀀스의 공유를 합산하십시오. 그런 다음이 세트를 다시 연결하고 시퀀스를 통해 공유를 합산하려고합니다. 그러나 C = concat([A,B])을 사용해 보았는데 이제는 색인으로 열 공유 만 있고 시퀀스별로 그룹화 할 수 없습니다. C.group(['sequence']).sum()는 나에게 KeyError : '시퀀스라는 이름의 아이템이 없습니다'라는 오류를줍니다.

sequence shares 
1  400 
2  450 
3  100 

사람이 설명 할 수 여기에 무슨 일한다 : 나는 나가 싶은 무엇

는 C? 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