先说一下最近一两天困扰我的问题,有这样一张数学成绩表
class name math
0 1 sA 98.547175
1 1 sB 70.360566
2 1 sC 31.812324
3 1 sD 98.073949
4 2 sE 90.765813
5 2 sF 91.681890
6 2 sG 0.907554
7 3 sH 26.523481
8 3 sI 59.072579
我想找到每个班数学成绩最好的同学叫什么,该怎么实现呢?
这是我研究了两天搞出的答案【惭愧,人艰不拆】
idxes=df.groupby('class')['math'].idxmax
print(df.iloc[idxes])
有更好的答案可以告诉我
完整的代码是:
import pandas as pd
import numpy as np
classes=[1]*4+[2]*3+[3]*2
names=['s'+chr(ord('A')+i) for i in range(9)]
math=np.random.rand(9)*100
df=pd.DataFrame()
df['class']=classes
df['name']=names
df['math']=math
print(df)
idxes=df.groupby('class')['math'].idxmax
print(df.iloc[idxes])
网友评论