How do I create a sum row and sum column in pandas?

后端 未结 4 430
刺人心
刺人心 2020-12-08 06:55

I\'m going through the Khan Academy course on Statistics as a bit of a refresher from my college days, and as a way to get me up to speed on pandas & other scientific Py

4条回答
  •  自闭症患者
    2020-12-08 07:28

    From the original data using crosstab, if just base on your input, you just need melt before crosstab

    s=df.reset_index().melt('index')
    pd.crosstab(index=s['index'],columns=s.variable,values=s.value,aggfunc='sum',margins=True)
    Out[33]: 
    variable      Graduate  Undergraduate   All
    index                                      
    Not                440           3760  4200
    Straight A's        60            240   300
    All                500           4000  4500
    

    Toy data

    df=pd.DataFrame({'c1':[1,2,2,3,4],'c2':[2,2,3,3,3],'c3':[1,2,3,4,5]}) 
    # before `agg`, I think your input is the result after `groupby` 
    df
    Out[37]: 
       c1  c2  c3
    0   1   2   1
    1   2   2   2
    2   2   3   3
    3   3   3   4
    4   4   3   5
    
    
    pd.crosstab(df.c1,df.c2,df.c3,aggfunc='sum',margins
    =True)
    Out[38]: 
    c2     2     3  All
    c1                 
    1    1.0   NaN    1
    2    2.0   3.0    5
    3    NaN   4.0    4
    4    NaN   5.0    5
    All  3.0  12.0   15
    

提交回复
热议问题