2017-08-10 29 views
1

嗨排序列中的所有,我有以下數據框:由GROUPBY

 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

看來你需要:

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

更通用的解決方案 - 第一reset_index原創指數值和原來的順序第二reset_index,然後排序兩列:

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