2016-10-18 124 views
0

假设我们有以下数据框:熊猫:由最高值排序列

A B C D 

1 5 16 1 
5 30 45 10 
2 40 60 5 
4 15 40 7 

这里,我们需要根据自己的最大值的列进行排序。 因此,列应进行排序,如:

C B D A 

因为最大值(C)= 60,最大值(B)= 40,最大值(d)= 10,最大值(A)= 5。

自动执行此操作的最佳方法是什么?

回答

2

您可以按从df.max结果,并以此来重新索引DF:

In [64]: 
df.ix[:, df.max().sort_values(ascending=False).index] 

Out[64]: 
    C B D A 
0 16 5 1 1 
1 45 30 10 5 
2 60 40 5 2 
3 40 15 7 4 

突破上述下降:

In [66]: 
df.max() 

Out[66]: 
A  5 
B 40 
C 60 
D 10 
dtype: int64 

In [67]: 
df.max().sort_values(ascending=False) 

Out[67]: 
C 60 
B 40 
D 10 
A  5 
dtype: int64 
+0

好消息是,它的确排序较下层的背部。问题是,它显示了C多次?即C C C C C C ... C B D A – RPacker

+0

对不起这里有什么期望的结果?你想只是按行排序值?如果是这样,这是不明确的,不同于你所要求的 – EdChum

+0

直到df.max()。sort_values(ascending = False)它运作良好。在创建df时它会以某种方式中断(重新排列列) – RPacker