У меня есть датафрейм, похожий на этот
studentID subjectID subjectMark subjectWeight Rank overallScore
1 111 100 0.4 3 40
1 222 0 0.6 3 40
2 111 90 0.4 1 90
2 222 90 0.6 1 90
3 111 0 0.4 2 60
3 222 100 0.6 2 60
, как вы можете видеть, ученики 1 и 3, каждый из них набрал очень высокий балл по определенным предметам, но их общие баллы плохие, тогда как у студента2 не получил ни одного высшего балла по какому-либо предмету, но имеет лучший общий балл
totalScore = subject111Mark * subject111Weight + subject222Mark * subject222Weight
, поэтому я хочу узнать, является ли определенный студент "всем"-рунд ", что означает, что я хочу видеть, имеет ли этот студент самый высокий общий балл , но не имеет ни одного наивысшего балла по какому-либо предмету.если это условие выполнено, пометьте этого студента как «универсал»
, и df должен выглядеть следующим образом:
studentID subjectID subjectMark subjectWeight Rank overallScore AR
1 111 100 0.4 3 40 F
1 222 0 0.6 3 40 F
2 111 90 0.4 1 90 T
2 222 90 0.6 1 90 T
3 111 0 0.4 2 60 F
3 222 100 0.6 2 60 F
У меня есть дополнительный вопрос
данный ответ может помочь в последнем кадре данных, но что, если я хочу сделать это для каждого класса в следующем кадре данных?
studentID subjectID subjectMark subjectWeight Rank overallScore classID
1 111 100 0.4 3 40 1
1 222 0 0.6 3 40 1
2 111 90 0.4 1 90 1
2 222 90 0.6 1 90 1
3 111 0 0.4 2 60 1
3 222 100 0.6 2 60 1
4 444 95 0.4 3 38 2
4 555 0 0.6 3 38 2
5 444 90 0.4 1 90 2
5 555 90 0.6 1 90 2
6 444 0 0.4 2 57 2
6 555 95 0.6 2 57 2