2017-08-17 74 views
2

我想知道是否有人知道如何以按以下方式大熊貓數據幀的好方法:熊貓據幀順序和列的值排序

一)我有出現一個ID下面的隨機排序的數據多次和標籤是0或1:

 
id | label 
------ | ------ 
1 | 1 
1 | 0 
1 | 0 
2 | 1 
2 | 0 
2 | 0 
3 | 0 
3 | 0 
3 | 0 

我想按升序標籤進行排序,然後也ID的升序排序,但不進行分組,所以像這樣的:

 
id | label 
------ | ------ 
1 | 0 
2 | 0 
3 | 0 
1 | 0 
2 | 0 
3 | 0 
3 | 0 
1 | 1 
2 | 1 

提前致謝!

回答

3

首先按ID和標籤排序,然後使用cumcount創建一個代表1,2,3組的索引,然後按索引和標籤進行排序。

df_out = df.sort_values(by=['id','label'])\ 
    .set_index(df.groupby('id').cumcount())\ 
    .sort_index()\ 
    .sort_values(by='label') 

輸出:

id label 
0 1  0 
0 2  0 
0 3  0 
1 1  0 
1 2  0 
1 3  0 
2 3  0 
2 1  1 
2 2  1 
+1

完美的作品,非常感謝你!你太棒了。 – SirTobi

+1

++對於讀心術:-) – MaxU

+1

我知道這肯定與cumcount有關。我試過但失敗了。使用sort_index這太棒了。 – Dark