Pandas排序数据框,类标签不变

时间:2016-11-22 20:53:49

标签: python sorting pandas

我想按升序对数据框的每一列进行排序

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进行排序后得到的类值改变了上述值,不应该发生。请建议我如何调整类列的代码以与相应的输入值相关联。

1 个答案:

答案 0 :(得分: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