Python 对两列进行排序,同时固定一个附加列

Python 对两列进行排序,同时固定一个附加列,python,python-3.x,pandas,dataframe,sorting,Python,Python 3.x,Pandas,Dataframe,Sorting,我有一个熊猫数据框,看起来像这样: X Y Z AB bat 0.51184607 AB ball 0.45687276 AB cat 0.5428388 CD apple 0.89665717 CD tiger 0.6785901 CD bench 0.787102 CD dragon 0.8066087 我想根据Z列的降序值对数据帧进行排序,并相应地得到相应的Y列值,但保持X列为常量。因此,输出应该如下所示: X

我有一个熊猫数据框,看起来像这样:

X    Y        Z
AB  bat     0.51184607
AB  ball    0.45687276
AB  cat     0.5428388
CD  apple   0.89665717
CD  tiger   0.6785901
CD  bench   0.787102
CD  dragon  0.8066087
我想根据Z列的降序值对数据帧进行排序,并相应地得到相应的Y列值,但保持X列为常量。因此,输出应该如下所示:

X    Y         Z
AB  cat     0.5428388
AB  bat     0.51184607
AB  ball    0.45687276
CD  apple   0.89665717
CD  dragon  0.8066087
CD  bench   0.787102
CD  tiger   0.6785901

如何在pandas中有效地执行此操作

您可以执行
对值进行排序

df = df.sort_values(['X','Z'],ascending=[True,False])
Out[74]: 
    X       Y         Z
2  AB     cat  0.542839
0  AB     bat  0.511846
1  AB    ball  0.456873
3  CD   apple  0.896657
6  CD  dragon  0.806609
5  CD   bench  0.787102
4  CD   tiger  0.678590

您可以对值进行排序

df = df.sort_values(['X','Z'],ascending=[True,False])
Out[74]: 
    X       Y         Z
2  AB     cat  0.542839
0  AB     bat  0.511846
1  AB    ball  0.456873
3  CD   apple  0.896657
6  CD  dragon  0.806609
5  CD   bench  0.787102
4  CD   tiger  0.678590

df.sort_值(['X','Z'],升序=[True,False])
?对于
X
必须保持固定但没有字母数字顺序的情况,必须首先将其转换为dtype
category
,如所示。
df.sort_值(['X','Z'],升序=[True,False])
?对于
X
必须保持固定但没有字母数字顺序的情况,必须首先将其转换为数据类型
类别
,如中所示。