我有一张表:
Category Customer Month Year Unit Unit Symbol Value
0 AF Brand1 1 2017 Gross Sales $ 1
1 AF Brand1 1 2017 Sales quantity EAU 1
2 AF Brand1 2 2017 Gross Sales $ 1
3 AF Brand1 2 2017 Sales quantity EAU 1
4 AF Brand1 3 2017 Gross Sales $ 1
5 AF Brand1 3 2017 Sales quantity EAU 1
6 AF Brand1 4 2017 Gross Sales $ 1
7 AF Brand1 4 2017 Sales quantity EAU 1
8 AF Brand1 5 2017 Gross Sales $ 1
9 AF Brand1 5 2017 Sales quantity EAU 1
10 AF Brand2 1 2017 Gross Sales $ 1
11 AF Brand2 1 2017 Sales quantity EAU 1
12 AF Brand2 2 2017 Gross Sales $ 1
13 AF Brand2 2 2017 Sales quantity EAU 1
14 AF Brand2 3 2017 Gross Sales $ 1
15 AF Brand2 3 2017 Sales quantity EAU 1
16 AF Brand2 4 2017 Gross Sales $ 1
17 AF Brand2 4 2017 Sales quantity EAU 1
18 AF Brand2 5 2017 Gross Sales $ 1
19 AF Brand2 5 2017 Sales quantity EAU 1
我已经加载到内存
我想删除Customer列,并聚合其他列值相同的Value列forall记录。
EG:对于Category,Month,Year,Unit和Symbol相同的所有记录,我希望将Value字段汇总到一个新框架中,如下所示:
Category Month Year Unit Unit Symbol Value
0 AF 1 2017 Gross Sales $ 2
1 AF 1 2017 Sales quantity EAU 2
2 AF 2 2017 Gross Sales $ 2
3 AF 2 2017 Sales quantity EAU 2
4 AF 3 2017 Gross Sales $ 2
5 AF 3 2017 Sales quantity EAU 2
6 AF 4 2017 Gross Sales $ 2
7 AF 4 2017 Sales quantity EAU 2
8 AF 5 2017 Gross Sales $ 2
9 AF 5 2017 Sales quantity EAU 2
我尝试过不同的变体:
df.pivot_table(columns=['Unit', 'Unit Symbol', 'month', 'year'], index='Category', aggfunc=sum, values="Value")
但它总是返回错误,例如KeyError('%s not in index' % objarr[mask])
后跟我的客户列表。这对我来说没有意义,因为我正在转移我的数据以摆脱我的客户并聚合。
我有12个不同的客户和13个不同的类别。并非所有客户都具有所有类别,反之亦然。他们的关联随着时间的推移而变化,因此对此进行硬编码是不切实际的。
如何以这种方式汇总我的表?
答案 0 :(得分:4)
df.pivot_table(index=['Category','Month','Year','Unit','Unit Symbol'],values="Value",aggfunc=np.sum).reset_index().assign(Customer='Total')
输出:
Category Month Year Unit Unit Symbol Value Customer
0 AF 1 2017 Gross Sales $ 2 Total
1 AF 1 2017 Sales quantity EAU 2 Total
2 AF 2 2017 Gross Sales $ 2 Total
3 AF 2 2017 Sales quantity EAU 2 Total
4 AF 3 2017 Gross Sales $ 2 Total
5 AF 3 2017 Sales quantity EAU 2 Total
6 AF 4 2017 Gross Sales $ 2 Total
7 AF 4 2017 Sales quantity EAU 2 Total
8 AF 5 2017 Gross Sales $ 2 Total
9 AF 5 2017 Sales quantity EAU 2 Total