擅长:python、mysql、java
<pre><code>list_of_all_rounder_per_class = []
for classid in data['classID'].unique():
that_class = data.loc[data.classID == classID]
condition1 = that_class.groupby(['subjectID']).subjectMark.transform('max').eq(that_class.subjectMark)
condition2 = that_class.overallScore.eq(that_class. overallScore.max())
# get the above conditions and both met should return True
list_of_all_rounder_per_class.append(condition2 &((~condition1).groupby(that_class['studentID']).transform('all')))
total_result = [result_for_each_class.to_frame('all_rounder') for result_for_each_class in list_of_all_rounder_per_class]
all_rounder = pd.concat(total_result)
data = data.join(all_rounder, how='outer')
</code></pre>
<p>我已经找到了一个解决这个问题的方法,尽管这可能是实现这个目标的最好(最干净的)方法</p>