如何在python pandas中按自定义顺序排序?

时间:2016-03-23 10:43:55

标签: python pandas

我有以下格式的数据框

country region  measure Option1 Option2
A   R1  141 max max
A   R1  141 max min
A   R1  141 max default
A   R1  86  min max
A   R1  86  min min
A   R1  86  min default
A   R1  86  default max
A   R1  86  default min
A   R1  86  default default
A   R2  215 max max
A   R2  215 max min
A   R2  215 max default
A   R2  72  min max
A   R2  72  min min
A   R2  72  min default
A   R2  72  default max
A   R2  72  default min
A   R2  72  default default
A   R3  473 max max
A   R3  473 max min
A   R3  473 max default
A   R3  36  min max
A   R3  36  min min
A   R3  36  min default
A   R3  36  default max
A   R3  36  default min
A   R3  36  default default
使用df.sort(['country','Option1','Option2','region')进行排序后

country region  measure Option1 Option2
A   R1  86  default default
A   R2  72  default default
A   R3  36  default default
A   R1  86  default max
A   R2  72  default max
A   R3  36  default max
A   R1  86  default min
A   R2  72  default min
A   R3  36  default min
A   R1  141 max default
A   R2  215 max default
A   R3  473 max default
A   R1  141 max max
A   R2  215 max max
A   R3  473 max max
A   R1  141 max min
A   R2  215 max min
A   R3  473 max min
A   R1  86  min default
A   R2  72  min default
A   R3  36  min default
A   R1  86  min max
A   R2  72  min max
A   R3  36  min max
A   R1  86  min min
A   R2  72  min min
A   R3  36  min min

在这里,我想特别订购以下格式的订单:

country region  measure Option1 Option2
A   R1  86  min min
A   R2  72  min min
A   R3  36  min min
A   R1  86  min max
A   R2  72  min max
A   R3  36  min max
A   R1  86  min default
A   R2  72  min default
A   R3  36  min default
A   R1  86  default min
A   R2  72  default min
A   R3  36  default min
A   R1  86  default default
A   R2  72  default default
A   R3  36  default default
A   R1  86  default max
A   R2  72  default max
A   R3  36  default max
A   R1  141 max min
A   R2  215 max min
A   R3  473 max min
A   R1  141 max default
A   R2  215 max default
A   R3  473 max default
A   R1  141 max max
A   R2  215 max max
A   R3  473 max max

任何人都可以帮我一个方法来实现这种自定义的行顺序吗?

1 个答案:

答案 0 :(得分:1)

您可以使用sorted Categorical,但在count = int(input("What number do you want the timer to start: ")) count == ">" -1: print("count") print("") count = count - 1 time.sleep(1) 列中它不同,stil顺序为Option2minmax

default
d3['Option1'] = pd.Categorical(d3['Option1'],['min','default','max'], ordered=True)
d3['Option2'] = pd.Categorical(d3['Option2'],['min','max','default'], ordered=True)
d3 = d3.sort_values(['country','Option1', 'Option2' ])
print d3

或者:

   country region  measure  Option1  Option2
4        A     R1       86      min      min
13       A     R2       72      min      min
22       A     R3       36      min      min
3        A     R1       86      min      max
12       A     R2       72      min      max
21       A     R3       36      min      max
5        A     R1       86      min  default
14       A     R2       72      min  default
23       A     R3       36      min  default
7        A     R1       86  default      min
16       A     R2       72  default      min
25       A     R3       36  default      min
6        A     R1       86  default      max
15       A     R2       72  default      max
24       A     R3       36  default      max
8        A     R1       86  default  default
17       A     R2       72  default  default
26       A     R3       36  default  default
1        A     R1      141      max      min
10       A     R2      215      max      min
19       A     R3      473      max      min
0        A     R1      141      max      max
9        A     R2      215      max      max
18       A     R3      473      max      max
2        A     R1      141      max  default
11       A     R2      215      max  default
20       A     R3      473      max  default
31       B     R1       79      min      min
40       B     R2       88      min      min
49       B     R3       54      min      min
30       B     R1      384      min      max
39       B     R2      439      min      max
48       B     R3      172      min      max
32       B     R1       79      min  default
41       B     R2       88      min  default
50       B     R3       54      min  default
34       B     R1       79  default      min
43       B     R2       88  default      min
52       B     R3       54  default      min
33       B     R1      384  default      max
42       B     R2      439  default      max
51       B     R3      172  default      max
35       B     R1       79  default  default
44       B     R2       88  default  default
53       B     R3       54  default  default
28       B     R1       79      max      min
37       B     R2       88      max      min
46       B     R3       54      max      min
27       B     R1      384      max      max
36       B     R2      439      max      max
45       B     R3      172      max      max
29       B     R1       79      max  default
38       B     R2       88      max  default
47       B     R3       54      max  default