我正在尝试从pandas groupby对象中提取分组行数据,以便主要组数据(下面示例中的“course”)充当行索引,次要分组行值充当列标题('student' )和聚合值作为相应的行数据('得分')。
所以,例如,我想改造:
import pandas as pd
import numpy as np
data = {'course_id':[101,101,101,101,102,102,102,102] ,
'student_id':[1,1,2,2,1,1,2,2],
'score':[80,85,70,60,90,65,95,80]}
df = pd.DataFrame(data, columns=['course_id', 'student_id','score'])
我按course_id和student_id分组:
group = df.groupby(['course_id', 'student_id']).aggregate(np.mean)
g = pd.DataFrame(group)
这样的事情:
data = {'course':[101,102],'1':[82.5,77.5],'2':[65.0,87.5]}
g3 = pd.DataFrame(data, columns=['course', '1', '2'])
我花了一些时间浏览groupby documentation并且我已经拖网堆栈溢出等,但我仍然不确定如何解决问题。如果有人建议采用合理的方法为大型数据集实现这一目标,我将非常感激。
非常感谢!
答案 0 :(得分:3)
>>> g.reset_index().pivot('course_id', 'student_id', 'score')
student_id 1 2
course_id
101 82.5 65.0
102 77.5 87.5