如何按各列的中位数对DataFrame的列进行排序?
按列中位数对DataFrame列排序的通用方法
嘿,我懂你要的不是针对这个示例的“反转列序”巧合技巧,而是一套能通用的按列中位数排序的方法,这就给你拆解清楚!
核心思路
要实现按列中位数排序,咱们只需要三步就能搞定:
- 计算DataFrame每一列的中位数
- 根据中位数的大小对列名进行排序(升序/降序随你需求选)
- 用排序后的列名重新索引原DataFrame,得到最终排序结果
代码实现(以你的示例为例)
先还原示例里的DataFrame,再一步步操作:
import pandas as pd # 创建示例DataFrame data = { 'A': [1,4,7,10], 'B': [2,5,8,11], 'C': [3,6,9,12] } df = pd.DataFrame(data) # 第一步:计算每列的中位数 column_medians = df.median() # 输出结果:A 5.5,B 6.5,C 7.5 # 第二步:根据中位数降序排列列名(对应你想要的期望输出) ordered_columns = column_medians.sort_values(ascending=False).index # 这里得到的ordered_columns是 ['C', 'B', 'A'] # 第三步:用排序后的列名重新索引DataFrame sorted_df = df[ordered_columns] print(sorted_df)
运行结果
执行代码后,你会得到和期望完全一致的输出:
C B A 0 3 2 1 1 6 5 4 2 9 8 7 3 12 11 10
灵活调整
如果你想要升序排列(按中位数从小到大),只需要把sort_values里的ascending=False改成ascending=True就行,列顺序就会变成A、B、C。
这个方法完全通用,不管你的DataFrame有多少列、数据是什么类型,都能精准按中位数排序,再也不用依赖巧合的小技巧啦~
内容的提问来源于stack exchange,提问作者Jeni
相关产品推荐
相关产品推荐

