我有一个包含 3 列的数据框:
- 主题
- 学校
- 通过(真/假,用于通过主题)
每行是一个学生。对于每所学校,我想按学科获得每所学校通过的学生百分比。所以我想要一个数据透视表,其中行作为学校,列作为科目,值作为分数传递。
任何帮助将不胜感激。
您可以使用pivot_table():
df.pivot_table(rows='school', values='passed', cols='subject')
默认func
参数是mean
,因此您不必覆盖它:
>>> df = pd.DataFrame({'subject':['CS', 'Biology', 'Math', 'CS', 'CS'], 'school':['Stanford', 'Princeton', 'Stanford', 'Stanford', 'Stanford'], 'passed':[True,True,True,False,False]})
>>> df.pivot_table(rows='school', values='passed', cols='subject')
subject Biology CS Math
school
Princeton 1 NaN NaN
Stanford NaN 0.333333 1