根据值对列进行排序

时间:2014-11-08 16:14:51

标签: python sorting pandas multiple-columns

我有很多列的DataFrame,我想根据其总值对列进行排序,换句话说,第一列将具有最高值,所以

            A   B   C   D   E      F     G  L
Date                                
2010-01-01  0   10  0   0   950     0   40  0
2010-03-01  0   0   0   0   1040    0   0   0
2010-04-01  0   0   0   0   261     0   0   0
2010-05-01  40  10  0   0   207     0   0   300
2010-06-01  0   0   0   0   108     0   0   0
2010-07-01  0   0   0   13  137     0   50  0
2010-08-01  0   10  10  0   0       0   0   0
2010-10-01  0   0   0   0   97      40  40  0

1 个答案:

答案 0 :(得分:2)

如果我理解你想要的东西(示例输出总是一个好主意),一种方法是对列进行求和,对结果序列进行排序,并使用它来索引到帧中:

>>> colsum = df.sum()
>>> colsum.sort(ascending=False)
>>> df.loc[:, colsum.index]
               E    L   G   F   A   B   D   C
Date                                         
2010-01-01   950    0  40   0   0  10   0   0
2010-03-01  1040    0   0   0   0   0   0   0
2010-04-01   261    0   0   0   0   0   0   0
2010-05-01   207  300   0   0  40  10   0   0
2010-06-01   108    0   0   0   0   0   0   0
2010-07-01   137    0  50   0   0   0  13   0
2010-08-01     0    0   0   0   0  10   0  10
2010-10-01    97    0  40  40   0   0   0   0