nlargest(n,columns,keep='first') #降序排序
nsmallest(n,columns,keep='first') #升序排序
n:int类型,表示要返回的行数
columns:需要排序的列,如先根据A列进行排序,在根据B列进行排序--->['A','B']
keep:默认keep='first',当有重复值时,返回第一次出现的行;
keep='last',当有重复值时,返回最后一次出现的行;
keep='all',当有重复值时,返回所有的行(可能导致返回的结果大于n行);
df=pd.DataFrame({'name':['A','B','C','D','F'], 'score1':[90,100,86,86,70], 'score2':[88,98,90,100,90], 'sex':['男','男','女','男','女']}) print(df)
>>>
name score1 score2 sex
0 A 90 88 男
1 B 100 98 男
2 C 86 90 女
3 D 86 100 男
4 F 70 90 女
举例一:筛选出score1最高的前3名(注:包含重复值)
df_filt=df.nlargest(3,'score1',keep='first') print(df_filt) >>> name score1 score2 sex 1 B 100 98 男 0 A 90 88 男 2 C 86 90 女 df_filt=df.nlargest(3,'score1',keep='all') print(df_filt)
>>>
name score1 score2 sex
1 B 100 98 男
0 A 90 88 男
2 C 86 90 女
3 D 86 100 男
举例二:筛选出score1最高的前3名,如果重复再按照score2进行排序(注:都重复也返回)
df_filt=df.nlargest(3,['score1','score2'],keep='all') print(df_filt)
>>>
name score1 score2 sex
1 B 100 98 男
0 A 90 88 男
3 D 86 100 男