按groupby排序列

时间:2017-08-10 19:26:16

标签: python python-3.x pandas dataframe

大家好我有以下数据框:

     a                 LC_REF
5 Warranty Tsunami      1C17
6 10.1                  1C17
7 5.2                   1C17
...
5 Warranty Medium       1C17
6 9.1                   1C17
7 6.3                   1C17
...
5 Warranty Medium       2C17
6 4.2                   2C17
7 3.1                   2C17
...
5 Warranty High         2C17 
6 2.1                   2C17
7 0.5                   2C17

我正在尝试按LC_REF对它们进行排序,同时保持索引顺序:

     a                 LC_REF
5 Warranty Medium       2C17
6 4.2                   2C17
7 3.1                   2C17
...
5 Warranty High         2C17
6 2.1                   2C17
7 0.5                   2C17
...
5 Warranty Tsunami      1C17
6 10.1                  1C17
7 5.2                   1C17
...
5 Warranty Medium       1C17 
6 9.1                   1C17
7 6.3                   1C17

然而,当我尝试:

df.sort_values('LC_REF') 

我得到一个非常无序的数据帧。有没有办法按LC_REF排序,同时仍保持它们的顺序?

1 个答案:

答案 0 :(得分:1)

似乎你需要:

df.sort_values(['LC_REF'], ascending=False)

更一般的解决方案 - 首先是原始索引值的reset_index和原始订单的第二个reset_index,然后按2列排序:

df = df.reset_index()
       .reset_index()
       .sort_values(['LC_REF', 'level_0'], ascending=[False, True])
       .set_index('index')
       .drop('level_0', 1)
print (df)
                      a LC_REF
index                         
5       Warranty Medium   2C17
6                   4.2   2C17
7                   3.1   2C17
5         Warranty High   2C17
6                   2.1   2C17
7                   0.5   2C17
5      Warranty Tsunami   1C17
6                  10.1   1C17
7                   5.2   1C17
5       Warranty Medium   1C17
6                   9.1   1C17
7                   6.3   1C17