2016-09-09 2 views
3

저는 DataFrames를 처음 사용하고 여러 열을 그룹화 한 다음 마지막 열을 더하고 합계를 유지하려고합니다. 예 :그룹별로 두 개의 집계 열 작성하기 By Pandas

s = pd.DataFrame(np.matrix([[1, 2,3,4], [3, 4,7,6],[3,4,5,6],[1,2,3,7]]), columns=['a', 'b', 'c', 'd']) 

    a b c d 
0 1 2 3 4 
1 3 4 7 6 
2 3 4 5 6 
3 1 2 3 7 

나는 a, bc에 그룹에 원하는하지만 d에 요약하고 그룹 내의 요소를 계산합니다. 내가

s = s.groupby(by=["a", "b", "c"])["d"].count() 

    a b c 
    1 2 3 2 
    3 4 5 1 
      7 1 

에 의해 믿을 수있는 그리고 내가 그런 결과 dataframe는 합계 계산 열을 모두 가지고 결합하려는 그러나 나는

s = s.groupby(by=["a", "b", "c"])["d"].sum() 

a b c 
1 2 3 11 
3 4 5  6 
     7  6 

로 요약 할 수 있습니다.

a b c sum count 
    1 2 3 11  2 
    3 4 5  6  1 
      7  6  1 

답변

1

당신은 aggregate, 이하 버전 agg를 사용할 수 있습니다

print (s.groupby(by=["a", "b", "c"])["d"].agg([sum, 'count'])) 
#print (s.groupby(by=["a", "b", "c"])["d"].aggregate([sum, 'count'])) 
     sum count 
a b c    
1 2 3 11  2 
3 4 5 6  1 
    7 6  1 

Pandas documentation합니다.

sizecount의 차이는 :

size 카운트 NaNcount하지 않습니다.

필요도 NaN 값을 계산하는 경우 :

print (s.groupby(by=["a", "b", "c"])["d"].agg([sum, 'size'])) 
     sum size 
a b c   
1 2 3 11  2 
3 4 5 6  1 
    7 6  1