2016-11-22 291 views
1

我想數據幀的各列以升序熊貓排序數據幀

df: 

      a   class 
    0 0.726300  1 
    1 0.330514  1 
    2 0.261841  1 
    3 0.321594  -1 
    4 0.273200  -1 
    5 0.125400  1 

code: 

for each_column in df.columns: 
if each_column !='class': 
    df[each_column] = sorted(df[each_column]) 

sorted df: 

      a   class 
     0 0.125400  1 
     1 0.261841  1 
     2 0.273200  1 
     3 0.321594  -1 
     4 0.330514  -1 
     5 0.726300  1 

排序但我想與對應的輸入值的類列作爲在原始數據幀。例如,在原始的df中,在第4行(即index = 4)中,輸入值爲0.273200,相應的類爲-1,輸入值爲0.330514,相應的類爲1,但在對df進行排序後,得到的類值因上述不應發生的值而改變。請建議我如何調整類列的代碼以使其與相應的輸入值相關聯。

回答

0

DataFrame.sort_values應該做的工作:

In [5]: df 
Out[5]: 
     a class 
0 0.726300  1 
1 0.330514  1 
2 0.261841  1 
3 0.321594  -1 
4 0.273200  -1 
5 0.125400  1 

In [6]: df.sort_values(by='a') 
Out[6]: 
     a class 
5 0.125400  1 
2 0.261841  1 
4 0.273200  -1 
3 0.321594  -1 
1 0.330514  1 
0 0.726300  1 
+0

對不起,我不讀問題不錯,看來你是對的。 – jezrael

+0

@fuglede您提供的解決方案是返回原始數據框,它不是排序。 – vikky

+1

@vikky:它返回一個有序的'DataFrame'。如果這是你需要的,你可以用這個覆蓋'df'。 – fuglede