我有兴趣在熊猫中展示以下数据:
metric1 | metric 2 || % occurence | total
-----------------------------------------
A | 1 || 20 |
| 2 || 10 | 35
| 3 || 5 |
-----------------------------------------
B | 1 || 40 |
| 2 || 10 | 65
| 3 || 15 |
(对于文本搜索,我将其描述为显示groupby的细分以及MultiIndex外部级别的聚合值)
我可以创建除total
列之外的所有列:假设df
是一个像
metric1 | metric 2 | percentage
--------------------------------
A | 1 | 20
A | 2 | 10
A | 3 | 5
B | 1 | 40
B | 2 | 10
B | 3 | 15
我可以使用
获得我想要的大部分内容aggregate_df = df.groupby(['metric1', 'metric2']).sum()
我可以使用
获取总值aggregate_df.sum(level=0)
我的问题是,有没有办法在一个DataFrame中一起显示它们?
答案 0 :(得分:1)
使用多个索引,您可以制作它并crosstab
+ stack
pd.crosstab(index=df.metric1,columns=df.metric2,values=df.percentage,aggfunc='sum',margins=True).set_index('All',append=True).iloc[:-1].stack()
Out[59]:
metric1 All metric2
A 35 1 20
2 10
3 5
B 65 1 40
2 10
3 15
dtype: int64