道歉如果以前有人问过类似的问题,我四处搜索,但找不到解决办法
我的数据集看起来像这样
data1 = {'Group':['Winner','Winner','Winner','Loser','Loser','Loser'],
'MathStudy': ['Read','Read','Notes','Cheat','Cheat','Read'],
'ScienceStudy': ['Notes','Read','Cheat','Cheat','Read','Notes']}
df1 = pd.DataFrame(data=data1)
我想得到每个组的每个类别的总百分比,如下所示。在我的数据集中,赢家和输家的数量会发生变化,因此,我们非常欣赏灵活的解决方案。
提前谢谢你
@jezrael的解决方案是直观的,我会直接做什么。然而,我最近了解到
melt
通常表现不佳。如果性能很重要,例如在重复使用的代码中,这里有一个替代方案:对于运行时:
与
melt
方法相比:输出:
注意:
pd.crosstab
本质上是groupby()
加上一些额外的簿记。两列上的groupby
通常要慢得多将^{} 与^{} 和
normalize
参数一起使用:最后如果需要} 到具有^{} :
MultiIndex
到具有删除value
列名的列添加^{以下是另一种选择:
相关问题 更多 >
编程相关推荐