重新排列pandas DataFrame的列,使具有最高总数的列排在第一位。

6

I have this DataFrame:

df = pd.DataFrame({'c1':[1,2,3,4]
                       ,'c2':[2,4,5,6]
                       ,'c3':[5,7,9,10]
                       ,'c4':[-1,3,1,0]
                       ,'c5':[100,1000,1,2]})
df

    c1  c2  c3  c4  c5
0   1   2   5   -1  100
1   2   4   7   3   1000
2   3   5   9   1   1
3   4   6   10  0   2

我不知道如何快速地对列进行排序,使得总和最高的c5列排在第一位,其次是c3、c2、c1和c4:

    c1  c2  c3  c4  c5
0   1   2   5   -1  100
1   2   4   7   3   1000
2   3   5   9   1   1
3   4   6   10  0   2

那么有没有一条命令可以生成以下结果(而不是硬编码列名)?
df[['c5', 'c3', 'c2', 'c1' , 'c4']]

    c5  c3  c2  c1  c4
0   100     5   2   1   -1
1   1000    7   4   2   3
2   1   9   5   3   1
3   2   10  6   4   0
1个回答

7

抱歉这个问题有点简单 - 比我想象的要容易:

df[df.sum().sort_values(ascending = False).index]

3
你可以删除“list”:df[df.sum().sort_values(ascending=0).index] - MaxU - stand with Ukraine

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接