pandas:如果行具有相同的ran,则按字母顺序排序

2024-04-24 22:48:15 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有一个数据帧,其中有两行具有相同的值:

testdf = pd.DataFrame({'a': ['alpha','beta','theta','delta','epsilon'],'b':[1,2,3,3,4]})

         a  b
0    alpha  1
1     beta  2
2    theta  3
3    delta  3
4  epsilon  4

现在我想根据B列对它们进行排序:

testdf['rank'] = testdf['b'].rank(ascending=False)

         a  b  rank
0    alpha  1   5.0
1     beta  2   4.0
2    theta  3   2.5
3    delta  3   2.5
4  epsilon  4   1.0

由于第2行和第3行的排名相同,因此我想按字母顺序排列它们以供查看:

         a  b  rank
0    alpha  1   5.0
1     beta  2   4.0
3    delta  3   2.5
2    theta  3   2.5
4  epsilon  4   1.0

但我不知道怎么做。也许我可以把它们按等级分组然后排序。。。?不过,我不知道该怎么做。你知道吗


Tags: 数据alphafalsedataframe排序字母betapd
1条回答
网友
1楼 · 发布于 2024-04-24 22:48:15

可以使用^{}按多个列排序,您需要的是先按rank排序,然后按a列排序,如果您希望它发生在原地,我们使用inplace=True如下:

In [14]: testdf.sort_values(['rank', 'a'], ascending=[False, True], inplace=True)

In [15]: testdf
Out[15]: 
         a  b  rank
0    alpha  1   5.0
1     beta  2   4.0
3    delta  3   2.5
2    theta  3   2.5
4  epsilon  4   1.0

如果不使用inplace=True,则操作将返回结果数据帧。你知道吗

相关问题 更多 >