2016-11-22 165 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