小编MrG*_*eme的帖子

将 Pandas groupby 数据行值重塑为列标题

我正在尝试从 Pandas groupby 对象中提取分组的行数据,以便主要组数据(下面示例中的“课程”)充当行索引,次要分组行值充当列标题(“学生”)和聚合值作为相应的行数据(“分数”)。

因此,例如,我想转换:

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'])
Run Code Online (Sandbox Code Playgroud)

我按 course_id 和 student_id 分组:

group = df.groupby(['course_id', 'student_id']).aggregate(np.mean)
g = pd.DataFrame(group)
Run Code Online (Sandbox Code Playgroud)

变成这样:

data = {'course':[101,102],'1':[82.5,77.5],'2':[65.0,87.5]}
g3 = pd.DataFrame(data, columns=['course', '1', '2'])
Run Code Online (Sandbox Code Playgroud)

我花了一些时间查看groupby 文档,并且已经对堆栈溢出等问题进行了搜索,但我仍然不确定如何解决这个问题。如果有人能提出一种明智的方法来为较大的数据集实现这一目标,我将不胜感激。

非常感谢!

  • 编辑:修复 g3 示例错字

python pandas

5
推荐指数
1
解决办法
8299
查看次数

标签 统计

pandas ×1

python ×1