根据数据帧内的值按特定顺序对列重新排序,该顺序按行降序

问题描述 投票:0回答:1

这个问题与使用列名按字母顺序排序无关,问题陈述是根据数据帧内的值以某种顺序对列进行重新排序,该顺序是按行降序的

我有以下数据框,

JSWINFRA    GUFICBIO        HARIOMPIPE  
3           4               4           
1           3               3           
0           0               1           
4           1               0

我希望它像下面这样排序,
注意:我不能使用 df.sort_values(by='column_name') 因为列是从 API 动态生成的

HARIOMPIPE  GUFICBIO        JSWINFRA    
4           4               3           
3           3               1           
1           0               0           
0           1               4

我怎样才能通过pandas做到这一点?

python-3.x pandas
1个回答
0
投票

您可以使用

np.lexsort
获取列的排序顺序,并使用
iloc
重新排序:

df.iloc[:,np.lexsort(-df.to_numpy()[::-1])]

输出:

   HARIOMPIPE  GUFICBIO  JSWINFRA
0           4         4         3
1           3         3         1
2           1         0         0
3           0         1         `
© www.soinside.com 2019 - 2024. All rights reserved.