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

Python Pandas中如何对object类型run列按General-0起始升序排序?

如何让run列按General-后的数值升序排序?

你遇到的问题根源在于run列是object(字符串)类型,直接用sort_values会按字符的ASCII顺序排序,而不是你想要的General-后缀的数字大小顺序。要实现从General-0开始的升序排列,这里有两种实用的解决方法:

方法一:提取数字列作为排序依据

先从run的字符串中提取出General-后面的数字部分,转换成整数类型,再用这个整数列作为排序的依据:

# 提取General后的数字并转为整数
df['run_seq'] = df['run'].str.extract(r'General-(\d+)').astype(int)

# 按数字升序排序,之后可以删掉临时生成的run_seq列
sorted_df = df.sort_values('run_seq').drop('run_seq', axis=1)

方法二:用key参数直接指定排序规则(无需新增列)

如果你不想额外添加临时列,可以直接在sort_values中使用key参数,传入自定义函数来提取排序用的数值:

sorted_df = df.sort_values(
    by='run',
    key=lambda col: col.str.extract(r'General-(\d+)').astype(int)
)

为什么原方法不生效?

字符串排序是逐字符对比的:比如General-10会排在General-2前面——因为字符串里的1比2的ASCII码小,但从数值逻辑看这显然不符合预期。而我们通过提取数字并转为整数后,排序就会遵循数值大小的规则,完美匹配你想要的从General-0开始的升序效果。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:23:38