2016-05-31 3 views
0

제목이 의미가 있기를 바랍니다.groupby(). sum() 합계를 얻은 후에 부분 합계를 얻으려면 어떻게해야합니까?

내가 지금 할 노력하고있어 무엇
>> df1 = df.groupby(['USER','Task'])['Task Minutes'].sum().reset_index(name='Total Task Min') 
>> df1 

    USER Task Total Task Min 
0 USER1 TASK1 48.00 
1 USER1 TASK2 139.00 
2 USER1 TASK3 86.00 

, 그룹 DF1은 '사용자'입니다 : 난 그냥 잘 작동 새로운 DF를, 나에게 '작업 분'합계를 얻고 만들려면 다음 코드를 사용했습니다 와 '작업'과 분을 합계, 그래서이 각 사용자의 합계를 얻을 비슷한 다음과 같습니다

USER Task Total Task Min 
USER1 TASK1 48.00 
     TASK2 139.00 
     TASK3 86.00 
Total   273.00 

나는 확실히 거기에 얻을 수 없습니다. 나는 그것이 같은 것이 논리적으로 생각하고 있어요 :

df2 = df1.groupby(['USER'])['Total Task Min'].sum() 

을 ...하지만이 오류가 발생합니다

TypeError: unsupported operand type(s) for +: 'Decimal' and 'float' 
+0

'의 출력 무엇 df1.groupby ([ 'USER']) [ 'Total Task Min']. 합계()'같이 보이시겠습니까? – ASGM

+0

같은 오류 : TypeError : + : 'Decimal'및 'float'에 대해 지원되지 않는 피연산자 유형 – Mike

+0

그래도 뭔가 익숙해졌습니다. 데이터의 이전 합계()로해야한다고 생각합니다. 미리 합산 된 데이터 프레임 열을 사용하는 경우 형식을 식별해야합니까? – Mike

답변

0

무엇 이것에 대해 :

pd.pivot_table(df1, values=['Total Task Min'], index=['USER'], 
       columns=['Task'], aggfunc=np.sum, margins=True).stack('Task') 
Out[75]: 
       Total Task Min 
USER Task     
USER1 All    273 
     TASK1    48 
     TASK2    139 
     TASK3    86 
All All    273 
     TASK1    48 
     TASK2    139 
     TASK3    86 
관련 문제