python pandas频率表

时间:2013-11-05 07:59:22

标签: python pandas

我有一个包含3列的数据框:

  • 受试者
  • 通过(真/假,传递主题)

每一行都是学生。对于每所学校,我希望按学科获得每所学校的学生百分比。所以我想要一个数据透视表,其中行为学校,列为主题,值为分数传递。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

您可以使用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