【发布时间】:2021-10-18 01:37:04
【问题描述】:
我有一个数据框,其中列是学生的姓名,行是成绩(每一行是不同的测试)。通过以下代码,我找到了每个测试的最高分
df.max(axis=1)
但是,现在我想知道哪个学生获得了最高分。因此,我想得到以下最后一列:
Student 1 | Student 2 | Student 3 | Max_grade | Which_student
0 3.76 | 3.69 | 2.48 | 3.79 | Student 1
1 1.65 | 4.40 | 6.66 | 6.66 | Student 2
2 3.76 | 3.69 | 2.48 | 3.76 | Student 1
3 5.50 | 5.50 | 1.79 | 5.50 | Student 1, Student 2
4 5.50 | 4.50 | 1.79 | 5.50 | Student 1
如何获得每行的最高值?如果 2 名学生获得相同的分数,我想将两个名字都附加到最后一列。
我现在所做的是遍历所有值,例如:
for i in range(len(df)):
for j in range(len(df.columns)-1):
if df.iloc[i,j] == df['Max_grade'].iloc[i]:
print(i,total_bets.columns[j])
这将返回以下内容:
0 Student 1
1 Student 2
2 Student 1
3 Student 1
3 Student 2
4 Student 1
但是,如何将第三行的两个学生组合在一起,以及如何将值保存在 df 中?
【问题讨论】: