如何在获得groupby()。sum()总计后获得小计?

时间:2016-05-31 15:43:52

标签: python-2.7 pandas

我希望主题是有道理的。我使用了以下代码来获取“任务分钟”#39;总计并创建一个新的df,工作正常:

>> 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和'任务'并总结分钟,所以它看起来像这样或类似的东西得到每个用户的小计:

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'

1 个答案:

答案 0 :(得分: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