Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
按列分组,对另一列排序,并在python中为行分配秩_Python_Sorting_Group By - Fatal编程技术网

按列分组,对另一列排序,并在python中为行分配秩

按列分组,对另一列排序,并在python中为行分配秩,python,sorting,group-by,Python,Sorting,Group By,我在熊猫中有以下数据框“分数” identifier name score D29650 abc10 115369-52-3 0.75 D29650 abc10 115369-52-4 0.34 D29651 abc11 115369-52-5 0.25 D29651 abc11 ls-132190 0.67 D29652 abc12 me1228 1.0 D29652 abc12 me 1228

我在熊猫中有以下数据框“分数”

identifier  name             score
D29650  abc10   115369-52-3  0.75
D29650  abc10   115369-52-4  0.34
D29651  abc11   115369-52-5  0.25
D29651  abc11   ls-132190    0.67
D29652  abc12   me1228           1.0
D29652  abc12   me 1228          0.875
我想在每个标识符内对分数列进行排序,并为每个条目分配一个等级。我使用下面的命令来做这件事,但不知道如何给排名

score_new=scores.groupby(['identifier'],as_index=False).apply(lambda x:x.sort_values(by='score',ascending=False)).reset_index(drop=True)
所需输出为:

identifier  name             score  rank
D29650  abc10   115369-52-3  0.75   1
D29650  abc10   115369-52-4  0.34   2
D29651  abc11   ls-132190    0.67   1
D29651  abc11   115369-52-5  0.25   2 
D29652  abc12   me1228           1.0    1
D29652  abc12   me 1228          0.875  2
非常感谢这里的帮助使用:

df['rank']=df.groupby('identifier')['score'].rank(ascending=False).astype('int32')
试试这个

df1=df1.sort_values(['Identifier'],ascending=[True,True])
df1['Score']=df1.Name!=df1.Name.shift().fillna('edit')
df1.Score=df1.groupby('ID').Score.cumsum()+1

我们能得到绝对数的排名吗?目前,它是用小数表示的。感谢您可以使用列表理解:df['rank']=[int(i)for i in df.groupby(“标识符”)['score'].rank(升序=False)]上面的回答效果很好,我怎样才能将排名也排序..@rshar,添加了.astype('int32')来转换排名列,看看是否有帮助