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

如何以更优雅的Pandas风格调整DataFrame列的排序顺序?

更优雅的字符串整数列名排序方法

确实,你现有的实现虽然能完成列排序,但来回转换类型的步骤有点冗余。这里有几种更简洁、Pythonic的方式来实现相同的效果:

方法一:直接用sorted()的key参数一步到位

这是最简洁的写法,利用sorted函数的key参数直接指定排序依据为整数类型,无需额外的中间变量:

import pandas as pd
d = {'1': [1, 2], '7': [3, 4], '3': [3, 4], '5': [2, 7]}
df = pd.DataFrame(data=d)

# 一行代码完成列排序
df = df[sorted(df.columns, key=int)]

执行后输出的DataFrame列顺序就是按整数大小排列的:

1  3  5  7
0  1  3  2  3
1  2  4  7  4

方法二:使用reindex()明确重排列

如果你想让代码意图更清晰,可以用pd.DataFrame.reindex()方法,同样结合sorted的key参数:

df = df.reindex(sorted(df.columns, key=int), axis=1)

axis=1指定操作的是列轴,这个写法可读性更强,适合团队协作时让其他开发者一眼看懂你的意图。

为什么这些方法更优雅?

相比你原来的实现:

  • 省去了将列名转成列表、循环转换类型、再转回字符串的冗余步骤
  • 代码更紧凑,逻辑更连贯
  • 保留了原列名的字符串类型,同时实现了按整数大小排序的需求

注意:这些方法仅适用于列名都是可转换为整数的字符串的场景,如果列名中存在非整数格式的字符串,会抛出ValueError,这和你原方法的限制是一致的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:39:43