我可以使用 pandas 中的 pivot_table 来实现我想要的输出(如下所示)或与以下数据集类似的东西吗?我正在尝试做类似的事情:
pivot_table(df, rows=['region'], cols=['area','distributor','salesrep'],
aggfunc=np.sum, margins=True).stack(['area','distributor','salesrep'])
但我只得到每个区域的小计,如果我将区域从 cols 移动到行,那么我只会得到每个区域的小计。
数据集:
region 区域经销商 salesrep sales invoice_count 北海中部 HIN 营销 TLS 500 25 北海中部 HIN 营销 TLS 500 25 北海中部 HIN MARKETING OSE 500 25 北海中部 HIN MARKETING OSE 500 25 北海中环广恒 TCS 500 25 北海中环广恒 TCS 500 25 北海中环广兴 LBH 500 25 北海中环广兴 LBH 500 25 怡保中央 SGH EDERAN CHAN 500 25 怡保中央 SGH EDERAN CHAN 500 25 怡保中央 SGH EDERAN KAMACHI 500 25 怡保中央 SGH EDERAN KAMACHI 500 25 怡保中部 CORE SYN LILIAN 500 25 怡保中部 CORE SYN LILIAN 500 25 怡保中部 CORE SYN TEOH 500 25 怡保中部 CORE SYN TEOH 500 25 东 JB 利华 NF05 500 25 东 JB 利华 NF05 500 25 东 JB 丽华 NF06 500 25 东 JB 丽华 NF06 500 25 东 JB WONDER F&B SEREN 500 25 东 JB WONDER F&B SEREN 500 25 东 JB WONDER F&B MONC 500 25 东 JB WONDER F&B MONC 500 25 东 PJ PENGEDAR NORM 500 25 东 PJ PENGEDAR NORM 500 25 东 PJ PENGEDAR SIMON 500 25 东 PJ PENGEDAR SIMON 500 25 东 PJ HEBAT OGI 500 25 东 PJ HEBAT OGI 500 25 东 PJ HEBAT MIGI 500 25 东 PJ HEBAT MIGI 500 25
期望的输出:
region 地区经销商 salesrep invoice_count sales 总计 800 16000 中环 中环 总计 400 8000 北海中部 北海 总计 200 4000 北海中部 HIN MARKETING HIN MARKETING 总计 100 2000 Central Butterworth HIN MARKETING OSE 50 1000 北海中部 HIN 营销 TLS 50 1000 北海中环 KWANG HENG KWANG HENG Total 100 2000 北海中环广兴 LBH 50 1000 北海中环广亨 TCS 50 1000 怡保中环 怡保 总计 200 4000 怡保中环 CORE SYN CORE SYN 总计 100 2000 Central Ipoh CORE SYN LILIAN 50 1000 怡保中部 CORE SYN TEOH 50 1000 怡保中央 SGH EDERAN SGH EDERAN 总计 100 2000 怡保中央 SGH EDERAN CHAN 50 1000 Central Ipoh SGH EDERAN KAMACHI 50 1000 东东 总计 400 8000 东新山新山总计 200 4000 East JB LEI WAH LEI WAH 合计 100 2000 东 JB 利华 NF05 50 1000 东 JB 利华 NF06 50 1000 East JB WONDER F&B WONDER F&B Total 100 2000 东 JB WONDER F&B MONC 50 1000 东 JB WONDER F&B SEREN 50 1000 东 PJ PJ 总计 200 4000 东 PJ HEBAT HEBAT 总计 100 2000 东 PJ HEBAT MIGI 50 1000 东 PJ HEBAT OGI 50 1000 东 PJ PENGEDAR PENDEGAR 总计 100 2000 东 PJ PENGEDAR NORM 50 1000 东 PJ PENGEDAR SIMON 50 1000