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

如何对DataFrame的列进行重新排序?附示例数据集

如何对Pandas DataFrame的列进行重新排序

针对你给出的这个DataFrame,我来分享几个实用的列重新排序方法,都是日常处理数据时常用的技巧:

方法1:手动指定列顺序

这是最直接的方式——如果你已经明确知道想要的列顺序,直接把列名按目标顺序整理成列表,然后重新索引DataFrame就行。

比如假设你想把k列放在最后,其他列按final01, final10, final11, final12, final13, final14, final15的顺序排列,代码示例如下:

# 定义你想要的列顺序
new_col_order = ['final01', 'final10', 'final11', 'final12', 'final13', 'final14', 'final15', 'k']
# 重新排列列
df = df[new_col_order]

这种方式灵活度拉满,适合列数不多或者已经明确目标顺序的场景。

方法2:按列名规则自动排序

看你的列里有一堆finalXX格式的字段,如果你想按final后面的数字从小到大排序,同时保留k列在开头(或者你指定的位置),可以用sorted()配合自定义排序逻辑实现:

# 先筛选出所有final开头的列,按后面的数字排序
sorted_final_cols = sorted(
    [col for col in df.columns if col.startswith('final')],
    key=lambda x: int(x.split('final')[1])
)
# 把k列放在最前面,拼接排序后的final列
new_col_order = ['k'] + sorted_final_cols
# 应用新顺序
df = df[new_col_order]

执行后,列顺序就会变成k, final01, final10, final11, final12, final13, final14, final15,完美贴合数字递增的需求。

方法3:使用reindex()方法

和第一种方法逻辑类似,但用reindex()写法更清晰,适合需要同时处理行和列的场景,单独处理列的话代码是这样的:

new_col_order = ['k', 'final01', 'final10', 'final11', 'final12', 'final13', 'final14', 'final15']
df = df.reindex(columns=new_col_order)

效果和直接索引列完全一致,选哪种写法全看个人习惯。

小提醒:以上方法默认会返回一个新的DataFrame,如果你不想创建新对象,可以加上inplace=True参数(比如df.reindex(columns=new_col_order, inplace=True)),不过更推荐赋值给原变量或者新变量,避免原地修改带来的意外问题~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:06:54