df找出每行最大值所在的列名是什么

我们想要按照每行去找出TOPn个值,比如说,每个列名是每个学科的名字,每一行代表一个学生,我们想找出每个学生前3高分数是多少,又或者是前3高分数的学科是什么,那么就可以这样去是实现

#找出分数
x=chedai_copy[tree_col].iloc[0:1,:].values    
x[0,np.argsort(x)][0,-3:]

#找出学科
x=chedai_copy[tree_col].iloc[0:1,:].values    
np.argsort(x)[0,-3:]

array([0.01078317, 0.06371682, 0.10790607])

array([14,  8, 16], dtype=int64)

想找找出全部的,可以自己写个循环

 

2021.11.24号补充下面的:

如下图:

 

 我要想找出每个学生最高分的学科是什么,也就是上面图片中最高分学科这一列

先构造什么的数据

#建表语句
data_xueke = pd.DataFrame([[1,100,90,80],[2,90,100,80],[3,80,90,100]])
data_xueke.columns = ['学号','语文','数学','英语']

#保存最高分学科的index
l = []
for i in range(0,len(data_xueke)):
    x=data_xueke.iloc[i:i+1,1:].values    
    l.append(list(np.argsort(x)[0,-1:])[0])

#将最高学科拿出来
l1=[]
for i in l:
    l1.append(data_xueke.columns[i+1])
    
data_xueke['最高分学科'] = l1

#输出结果看看
data_xueke

学号 语文 数学 英语 最高分学科
0 1 100 90 80 语文
1 2 90 100 80 数学
2 3 80 90 100 英语

 

posted on 2021-03-09 15:45  小小喽啰  阅读(444)  评论(0)    收藏  举报