【发布时间】:2017-04-05 18:20:17
【问题描述】:
import pandas as pd
import numpy as np
df = pd.DataFrame( {
'A': ['d','d','d','f','f','f','g','g','g','h','h','h'],
'B': [5,5,6,7,5,6,6,7,7,6,7,7],
'C': [1,1,1,1,1,1,1,1,1,1,1,1],
'S': [2012,2013,2014,2015,2016,2012,2013,2014,2015,2016,2012,2013]
} );
df = (df.B + df.C).groupby([df.A, df.S]).sum().unstack(fill_value=0)
print (df)
S 2012 2013 2014 2015 2016
A
d 6 6 7 0 0
f 7 0 0 8 6
g 0 7 8 8 0
h 8 8 0 0 7
我想添加每年在数据框中求和的值的计数以及两个额外的列 [total of years] 和 [total count]
编辑;
Dataframe should look something like this;
S 2012 2012 2013 2013 2014 2014 2015 2015 Tot(sum) Tot(#)
A
d 6 x 6 x 7 x 0 x 19 x
f 7 x 0 x 0 x 8 x 15 x
g 0 x 7 x 8 x 8 x 23 x
h 8 x 8 x 0 x 0 x 16 x
编辑 2;
@Jezrael,如果我只想选择我需要的行(如另一个问题中所述),我会遇到列命名相同的问题。我们该如何解决?
编辑 3;
顺便说一句,是否可以对 2012 列使用通用参考,这样我以后就不必更改代码了?类似于数据框的第一列; df_without_first column = df.drop(first column, axis=1)
【问题讨论】:
标签: python pandas group-by pivot-table multi-index