python - Groupby 百分比列
问题描述
我有一个数据框
Student Exam Month
1 Maths 10
1 Maths 10
1 Maths 11
1 Science 10
1 Physics 10
2 science 11
2 physics 11
2 Maths 12
我想要按学生,按月计算的每次考试的输出百分比
Student Exam Month Pourcentage
1 Maths 10 50%
1 Maths 11 100%
1 Science 10 25%
1 physics 10 25%
2 physics 11 50%
2 science 11 50%
2 Maths 12 100
我试图使用这段代码,但它没有给出正确的结果
Count_exam= df.groupby('student','Exam')[Month].count()
Count_month= df.groupby('student')[Month].count()
df['Pourcentage] = Count_exam * 100 /Count_month
解决方案
IIUC,您可以简单地按size
每组划分:
df["Pct"] = 1/df.groupby(["Student", "Month"])["Exam"].transform("size")*100
print (df.groupby(["Student", "Exam", "Month"], as_index=False).agg("sum"))
Student Exam Month Pct
0 1 Maths 10 50.0
1 1 Maths 11 100.0
2 1 Physics 10 25.0
3 1 Science 10 25.0
4 2 Maths 12 100.0
5 2 physics 11 50.0
6 2 science 11 50.0
推荐阅读
- html - 如何仅使用 CSS 设置悬停动画?
- github - 为什么 Github Actions 对在我的 javascript 中使用 process.env 访问的任何 .env 值返回 null?
- html - 如何根据父 div 是否为 display:none 创建 CSS 规则
- c++ - 在命名空间列表中调用同名函数
- json - 如何解决 simplejson.errors.JSONDecodeError:期望值:第 1 行第 1 列(字符 0)?
- flutter - 如果行数在限制范围内,如何禁用扩展图标?扑
- amazon-web-services - 将 jar 文件传输到远程 EC2 服务器
- amazon-web-services - AWS Quicksight - 来自多个数据库的 MySQL UNION
- python - 使用 Matplotlib 可视化大型系统的偶极子
- mongodb - 我们如何将多个集合映射到 mongodb-sink-connector 中的多个主题?