Python 在一列上筛选,在另一列上排序,而不在数据帧中分组
我有一个数据框,有4列学生姓名、总分、入围名单、排名 我想根据total_marks列对行进行排序,其中的是入围的=“Y” 示例输入数据:Python 在一列上筛选,在另一列上排序,而不在数据帧中分组,python,python-3.x,pandas,dataframe,Python,Python 3.x,Pandas,Dataframe,我有一个数据框,有4列学生姓名、总分、入围名单、排名 我想根据total_marks列对行进行排序,其中的是入围的=“Y” 示例输入数据: name total_marks is_shortlisted Aman 67 Y Nitin 89 Y Ankur 76 Y Mohit 56 N Ashish 64
name total_marks is_shortlisted
Aman 67 Y
Nitin 89 Y
Ankur 76 Y
Mohit 56 N
Ashish 64 Y
name total_marks is_shortlisted rank
Aman 67 Y 3
Nitin 89 Y 1
Ankur 76 Y 2
Mohit 56 N nan
Ashish 64 Y 4
样本输出数据:
name total_marks is_shortlisted
Aman 67 Y
Nitin 89 Y
Ankur 76 Y
Mohit 56 N
Ashish 64 Y
name total_marks is_shortlisted rank
Aman 67 Y 3
Nitin 89 Y 1
Ankur 76 Y 2
Mohit 56 N nan
Ashish 64 Y 4
将
loc
与rank
一起使用:
df.assign(rank=df.loc[df.is_shortlisted.eq('Y')].total_marks.rank(ascending=False))
name total_marks is_shortlisted rank
0 Aman 67 Y 3.0
1 Nitin 89 Y 1.0
2 Ankur 76 Y 2.0
3 Mohit 56 N NaN
4 Ashish 64 Y 4.0
在了解您的数据的情况下,我们如何回答您的问题?请发一个@user3483203,现在请检查。我已经更新了问题。谢谢你的帮助。您能告诉我,如果我想将df复制到新的数据帧中,并且只复制到_shorlisted=Y的行中,我应该写什么吗。我需要一个不与旧版本链接的seprate副本。@priya我发布的代码返回一个副本,它不会修改数据帧,因此只需执行类似于
df1=code HERE
的操作,您就可以获得数据帧的副本:)