0

我得到以下csv:

地区,地区,分销商,销售代表,销售,invoice_count                                                                                                                       
中环,北海,HIN MARKETING,TLS,500,25                                                                                                                                 
中环,北海,HIN MARKETING,TLS,500,25                                                                                                                                 
中环,北海,HIN MARKETING,OSE,500,25                                                                                                                                 
中环,北海,HIN MARKETING,OSE,500,25                                                                                                                                 
东,JB,雷华,NF05,500,25                                                                                                                                                  
东,JB,雷华,NF05,500,25                                                                                                                                                  
东,JB,雷华,NF06,500,25                                                                                                                                                  
东,JB,雷华,NF06,500,25

如果我这样分组: df.groupby(['region','area','distributor','salesrep']).sum().unstack(['distributor','salesrep']).to_string()

我得到了以下结果。

                             销售发票计数                    
经销商 HIN MARKETING LEI WAH HIN MARKETING LEI WAH      
销售代表 OSE TLS NF05 NF06 OSE TLS NF05 NF06
区域面积                                                                              
北海中部 1000 1000 NaN NaN 50 50 NaN NaN
东 JB NaN NaN 1000 1000 NaN NaN 50 50

有没有一种方法可以代替单独的 sales 和 invoice_count 聚合分组,将聚合分布在每个单独的列上。

像这样的东西。

经销商 HIN MARKETING HIN MARKETING HIN MARKETING HIN MARKETING 丽华丽华丽华丽华丽华
销售代表 OSE OSE TLS TLS NF05 NF05 NF06 NF06
                             销售发票_count 销售发票_count 销售发票_count 销售发票_count
区域面积                                                                              
北海中部 1000 50 1000 50 NaN Nan NaN NaN
东 JB 南 南 南 南 1000 50 1000 50

我尝试通过遍历列并获取每个聚合然后从中创建一个新的数据框来解决它。但是在 pandas 中必须有一种更直接的方法可以做到这一点,我可能会错过。

4

1 回答 1

0

这是你想要的吗?

In [27]: df.groupby(['region','area','distributor','salesrep']).sum().T
Out[27]: 
region               Central           East      
area             Butterworth             JB      
distributor    HIN MARKETING        LEI WAH      
salesrep                 OSE   TLS     NF05  NF06
sales                   1000  1000     1000  1000
invoice_count             50    50       50    50 
于 2013-04-26T04:25:56.250 回答