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

如何按DataFrame首行值从大到小对列进行排序?

解决DataFrame列排序问题

你用df.sort_values()报错是因为这个方法是用来对行排序的,不是调整列顺序的,所以用错工具了。要按首行值排列顺序,得这么做:

方法一:严格按首行值从大到小排序

先提取首行数据,对列按首行值降序排列,NaN自动排到后面:

# 获取首行数据
first_row = df.loc['2019']
# 按首行值降序排序,NaN放最后
sorted_columns = first_row.sort_values(ascending=False, na_position='last').index.tolist()
# 重新排列DataFrame的列
df = df[sorted_columns]

这样得到的列顺序就是:Mercedes → Audi → Volvo → Hyundai → Kia → Tesla → VW,完全符合首行值从大到小的要求。

方法二:手动固定核心列顺序,其余列在后

如果想强制把Audi和Volvo放在Mercedes之后(不管首行排序结果),可以手动构造列顺序:

# 定义优先级高的列
priority_cols = ['Mercedes', 'Audi', 'Volvo']
# 筛选出剩下的列
remaining_cols = [col for col in df.columns if col not in priority_cols]
# 合并成新的列顺序
new_col_order = priority_cols + remaining_cols
# 重新排列列
df = df[new_col_order]

这个方法更灵活,能完全匹配你想要的列顺序规则。

为什么df.sort_values()会报错?

df.sort_values(by=...)的by参数是用来指定按哪些列的值对行排序,比如你想按Mercedes列的值把行从大到小排,才用这个方法。而你要调整列的顺序,本质是重新排列DataFrame的列索引,直接操作列名列表再重新索引才是正确的方式。

内容的提问来源于stack exchange,提问作者Xtiaan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 15:40:31