在保留列的同时对数据框行进行排序

索拉·维玛(Saurabh Verma)

我有一个熊猫数据框,如下所示:

         U1      U2      U3                                                      
U1       1.0     0.0     0.2 
U2       0.4     1.0     0.0
U3       0.0     0.45    1.0 

在这里,U1,U2和U3是索引和列标题。我想对每一行中的值进行排序,然后从每一行中选择前20名。但是,在排序之后,我还需要知道特定值来自哪一行和哪一列。例如,如果我单独对每一行进行排序,则会得到:

         U2      U3      U1                                                      
U1       0.0     0.2     1.0 

第一行

         U3      U1      U2                                                     
U2       0.0     0.4     1.0

第二排

         U1      U2      U3                                                      
U3       0.0     0.45    1.0 

第三排

但是,现在每一行的列顺序都不同。有没有一种有效的方法/数据结构(最好是数据框或numpy数组)可以汇总排序的信息?

文卡塔恰兰

可能会有所帮助,在这里您可以通过单次排序获得结果!

pd.DataFrame(list(df.apply(lambda x : sorted((x,c) for x,c in zip(x,df.columns)),axis=1)),
             index=df.index)

         0           1              2
U1  (0.0, 'U2') (0.2, 'U3')     (1.0, 'U1')
U2  (0.0, 'U3') (0.4, 'U1')     (1.0, 'U2')
U3  (0.0, 'U1') (0.45, 'U2')    (1.0, 'U3')

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章