重新排列 pandas DataFrame 的列,使总计最高的列位于第一个

why*_*heq 6 python pandas

我有这个数据框:

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
Run Code Online (Sandbox Code Playgroud)

我不知道如何快速对列进行排序,使总 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
Run Code Online (Sandbox Code Playgroud)

那么是否有一个命令可以产生以下结果(无需对列名称进行硬编码)?

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
Run Code Online (Sandbox Code Playgroud)

why*_*heq 7

对于这个琐碎的问题表示歉意 - 这比我想象的要容易:

df[df.sum().sort_values(ascending = False).index]
Run Code Online (Sandbox Code Playgroud)

  • 您可以删除`list`:`df[df.sum().sort_values(ascending=0).index]` (3认同)