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