You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按各列的中位数对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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 20:08:15