按 ID 分组,从同一 ID 的列中选择最高值

Grouping by ID choosing highest values in columns from same ID

我在尝试计算一些最终测试分数时遇到问题。我需要按学生分组,只为每个学生获取每列中的最高值。

作为 DF 数据框:

data = {'Students': ['Student1', 'Student1', 'Student1', 'Student2','Student2','Studen3'], 
        'Result1': [2, 4, 5, 8, 2, 5],
        'Result2': [5, 3, 2, 8, 5, 5],
        'Result3': [7, 5, 7, 3, 8, 9]}
df = pd.DataFrame(data)

    Students    Result1     Result2     Result3
0   Student1    2   5   7
1   Student1    4   3   5
2   Student1    5   2   7
3   Student2    8   8   3
4   Student2    2   5   8
5   Studen3     5   5   9

我需要生成一个 DF,在每个结果中为每个学生选择较高的分数。

所以,最终的 DF 应该是这样的:

    Students    Result1     Result2     Result3
0   Student1    5   5   7
1   Student2    8   8   8
2   Student3    5   5   9

有什么帮助吗?

可以使用对组的简单迭代生成数据框:

df2 = pd.DataFrame(columns=('Student', 'res1', 'res2', 'res3'))

for s in df.Students.unique():
    stdf = df[df["Students"]==s]
    df2 = df2.append({'Student':s,'res1':max(stdf.Result1),'res2':max(stdf.Result2),
                      'res3':max(stdf.Result3)}, ignore_index=True)

工作调用 groupby('Students').max()

>>> df.groupby('Students').max()

           Result1  Result2  Result3
Students
Student1        5        5        7
Student2        8        8        8
Student3        5        5        9