2017-07-28 86 views
0

所附我使用pivot_table命令下面,以满足我具有以下列格式的结果的要求总和在枢轴

active_def = pd.pivot_table(data, index = 'InMonth', columns= 'OutMonth', aggfunc= 'count')['ID'] 

我需要一个柱朝枢轴表的末端具有该行总数。类似地,朝向具有列总计的末尾的行和具有表中所有值的总和的一个单元格。 (简单来说,类似于我们通常在Excel中获得的关键点)。有没有python化的方式来做到这一点?我知道我们可以单独使用data.sum(axis=0/1)来获得,但是,我正在寻找一种更好的方式来完成此任务。

谢谢!每@Parfait建议

pivot table results

+0

考虑pivot_table的[利润率](https://pandas.pydata.org/大熊猫-文档/稳定/ reshaping.html#添加-边距)。 – Parfait

回答

0

用途:

active_def = pd.pivot_table(data, index = 'InMonth', columns= 'OutMonth', aggfunc= 'count', margins=True)['ID'] 

OR

您可以使用此一班轮:

数据建立

df = pd.DataFrame(data=np.triu(np.random.randint(0,13,(12,12))), 
        columns=np.arange(1,13), 
        index=np.arange(1,13)) 

计算的行,列和整个数据帧总计:

df.append(pd.Series(df.sum(),name='Total'))\ 
    .assign(Total=df.sum(1))\ 
    .set_value('Total','Total',df.values.sum()) 

输出:

 1 2 3 4 5 6 7 8 9 10 11 12 Total 
1  4 3 6 12 5 9 0 12 1 10 8 10 80.0 
2  0 9 8 1 5 1 5 10 7 1 9 2 58.0 
3  0 0 2 11 4 0 2 5 4 12 1 7 48.0 
4  0 0 0 11 9 2 10 3 0 5 2 10 52.0 
5  0 0 0 0 7 12 10 11 12 5 6 0 63.0 
6  0 0 0 0 0 12 1 4 1 2 11 0 31.0 
7  0 0 0 0 0 0 8 12 8 7 2 1 38.0 
8  0 0 0 0 0 0 0 12 7 0 5 9 33.0 
9  0 0 0 0 0 0 0 0 12 4 10 9 35.0 
10  0 0 0 0 0 0 0 0 0 3 7 1 11.0 
11  0 0 0 0 0 0 0 0 0 0 8 2 10.0 
12  0 0 0 0 0 0 0 0 0 0 0 5 5.0 
Total 4 12 16 35 30 36 36 69 52 49 69 56 464.0 
+0

@Praveenguptasanka,这个解决方案有帮助吗? –

+0

...大概是这样:) – pnuts