2017-11-18 1 views
1

df.groupby('croho subonderdeel').sum()그룹은 다음에서

출력 위는 합계를 가지고 : 나는 카테고리 당 전체 졸업생의 합을했다

df.groupby('croho subonderdeel').sum() 

,하지만 난 열 당뿐만 아니라 그것을 할 싶어 . 예를 들어, 첫 번째 열 '2011 MAN'에 대한 출력 만 수신하면됩니다. 그런 다음

df.groupby('croho subonderdeel','2011 MAN').sum() 

나는 다음과 같은 오류 얻을 :

나는 다음과 같은 노력 그리고

ValueError: No axis named 2011 MAN for object type <class 'pandas.core.frame.DataFrame'> 

내가 대신 두 번 그룹화의 어쩌면 생각을, 나는 '2011 MAN'의 합계를 취할 필요 . 그래서 시도 :

df.groupby('croho subonderdeel').sum('2011 MAN') 

가 그럼 난이 오류가 나타납니다

TypeError: f() takes 1 positional argument but 2 were given 

누군가가 나에게 설명 할 수를, 내가 노력하고있어 두 가지 방법이 가능하지 않은 이유는 무엇입니까? 어쩌면 나 혼자서 문제를 해결할 수 있을지도 모른다. 또한 여러 열을 지정할 수 있습니다

df.groupby('croho subonderdeel')['2011 MAN'].sum() 

:

답변

2

당신은 같은 []에 열을 지정해야합니다

df.groupby('croho subonderdeel')['2011 MAN', '2012 MAN'].sum() 

필요 2 columns 출력 매개 변수 as_index=False 추가 또한 경우 :

df.groupby('croho subonderdeel', as_index=False)['2011 MAN'].sum() 

또는 :

df.groupby('croho subonderdeel')['2011 MAN'].sum().reset_index() 

그러나 2 개 종류 (2 열)하여 원하는 그룹을 추가하는 경우 []groupby에 :

df.groupby(['croho subonderdeel', 'another col'])['2011 MAN'].sum() 

샘플 :

df = pd.DataFrame({'another col':list('efefef'), 
        '2011 MAN':[4,5,4,5,5,4], 
        '2011 WROUW':[7,8,9,4,2,3], 
        '2012 MAN':[1,3,5,7,1,0], 
        '2012 WROUW':[5,3,6,9,2,4], 
        'croho subonderdeel':list('aaabbb')}) 

print (df) 
    2011 MAN 2011 WROUW 2012 MAN 2012 WROUW another col croho subonderdeel 
0   4   7   1   5   e     a 
1   5   8   3   3   f     a 
2   4   9   5   6   e     a 
3   5   4   7   9   f     b 
4   5   2   1   2   e     b 
5   4   3   0   4   f     b 

print(df.groupby('croho subonderdeel')['2011 MAN'].sum()) 
croho subonderdeel 
a 13 
b 14 
Name: 2011 MAN, dtype: int64 

print(df.groupby('croho subonderdeel', as_index=False)['2011 MAN'].sum()) 
    croho subonderdeel 2011 MAN 
0     a  13 
1     b  14 

print(df.groupby('croho subonderdeel')['2011 MAN'].sum().reset_index()) 
    croho subonderdeel 2011 MAN 
0     a  13 
1     b  14 

print(df.groupby('croho subonderdeel')['2011 MAN', '2012 WROUW'].sum()) 
        2011 MAN 2012 WROUW 
croho subonderdeel      
a       13   14 
b       14   15 

print(df.groupby('croho subonderdeel', as_index=False)['2011 MAN', '2012 WROUW'].sum()) 
    croho subonderdeel 2011 MAN 2012 WROUW 
0     a  13   14 
1     b  14   15 

print (df.groupby(['croho subonderdeel', 'another col'])['2011 MAN'].sum()) 
croho subonderdeel another col 
a     e    8 
        f    5 
b     e    5 
        f    9 
Name: 2011 MAN, dtype: int64 

print (df.groupby(['croho subonderdeel', 'another col'], as_index=False)['2011 MAN'].sum()) 
    croho subonderdeel another col 2011 MAN 
0     a   e   8 
1     a   f   5 
2     b   e   5 
3     b   f   9 

print (df.groupby(['croho subonderdeel', 'another col']).sum()) 
           2011 MAN 2011 WROUW 2012 MAN 2012 WROUW 
croho subonderdeel another col            
a     e     8   16   6   11 
        f     5   8   3   3 
b     e     5   2   1   2 
        f     9   7   7   13 

print (df.groupby(['croho subonderdeel', 'another col'], as_index=False).sum()) 
croho subonderdeel another col 2011 MAN 2011 WROUW 2012 MAN 2012 WROUW 
0     a   e   8   16   6   11 
1     a   f   5   8   3   3 
2     b   e   5   2   1   2 
3     b   f   9   7   7   13 
의미가 있습니다
+0

! 왜 '2011 MAN'은 대괄호 안에 있어야하며 'croho subonderdeel'은 아닌가? 'croho subonderdeel'은 칼럼이기도하지만 둥근 괄호를 넣으면 작동합니다. –

+1

두 가지가 있습니다 :'groupby'에서 2 열을 사용하고 2 열로 그룹화하고 집계를 위해 열을 지정하는 경우'function 'groupby 외부에서'[]'를 사용하십시오. – jezrael

+0

SQL처럼 채워진 모든 셀에'reset_index()'를 추가 할 수도 있습니다. – harshil9968