Python中如何将DataFrame的所有列按降序排列?
解决方案
你原来的代码存在逻辑问题:循环里每次以单个列为依据对整个DataFrame排序,且每次都会覆盖descending_order变量,最后得到的只是按最后一列排序的结果——这种方式是让整个DataFrame跟着某一列的顺序走,并非实现每列独立降序排列。
下面分两种常见需求给出简洁方案:
情况1:按所有列依次作为排序键,整体降序排序
比如先按第一列降序,第一列值相同的再按第二列降序,以此类推,一行代码即可实现:
descending_order = loadings.sort_values(by=loadings.columns.tolist(), ascending=False)
情况2:让每一列独立降序排列(列内从大到小,行之间不关联)
如果想让每一列单独从大到小排序,不考虑行的对应关系,用apply处理每一列:
descending_order = loadings.apply(lambda col: col.sort_values(ascending=False).reset_index(drop=True))
其中reset_index(drop=True)用于重置排序后混乱的索引,不需要的话可以直接去掉。
内容的提问来源于stack exchange,提问作者surviving-grad
相关产品推荐
相关产品推荐

