0

假设我有以下数据框:

  Priority   Color Risk
1        1   Green    8
2        9     Red   10
3        5  Orange    4
4        3   Green    8
5        3     Red   9
6        7  Orange    4

我想首先按“红色”>“橙色”>“绿色”的顺序对“颜色”列进行排序。其中,我想按降序对“优先级”列进行排序(同时保持先前对颜色列的排序),最后按降序对“风险”列进行排序(同时保持先前对颜色的排序)和优先列)。所以结果应该是这样的:

  Priority   Color Risk
2        9     Red   10
5        3     Red   9
6        7  Orange    4
3        5  Orange    4
4        3   Green    8
1        1   Green    8

有谁知道如何做到这一点?

4

2 回答 2

0

只是排序。

df.sort_values(['Color', 'Priority', 'Risk'],ascending=False)
于 2019-07-22T19:38:07.987 回答
0

如果您转换color为分类变量,则可以定义顺序(在任何排序中都会受到尊重)。

df['Color'] = pd.Categorical(df['Color'], ["Red", "Orange", "Green"])
df.sort_values(['Color','Priority','Risk'], ascending=[True,False,False])

Out[1]: 
   Risk  Priority   Color
1    10         9     Red
4     9         3     Red
5     4         7  Orange
2     4         5  Orange
3     8         3   Green
0     8         1   Green

关于这个答案的一些有用信息也在这里

于 2019-07-22T19:39:55.633 回答