有没有一种方法可以通过与行的交叉点对熊猫列进行排序?

时间:2019-11-20 14:54:46

标签: python-3.x pandas dataframe rows columnsorting

我有一个pandas表,其中只有行和列之间的某些交集,其中包含行和列以及数据。见下文:

     col1  col2  col3  col4  col5
row1  1
row2               1    1
row3  1     
row4                    1     1
row5        1                

我想对列进行排序,以使与第1行相交的列排在第一位,与第2行相交的列排在第二,依此类推。如下所示:

     col1  col3  col4  col5  col2
row1  1
row2        1      1    
row3  1     
row4               1     1
row5                          1

谢谢您的任何建议。

1 个答案:

答案 0 :(得分:2)

如果这些空单元格是Nan,则可以在idxmax()上使用notnull()

orders = df.notnull().agg(['any', 'idxmax']).T
col_orders = orders.sort_values(['any', 'idxmax'],
                                ascending=[False, True]).index


df[col_orders]

输出:

      col1  col3  col4  col5  col2
row1   1.0   NaN   NaN   NaN   NaN
row2   NaN   1.0   1.0   NaN   NaN
row3   1.0   NaN   NaN   NaN   NaN
row4   NaN   NaN   1.0   1.0   NaN
row5   NaN   NaN   NaN   NaN   1.0