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 英语
浙公网安备 33010602011771号