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

Pandas如何对含数字后缀的字符串列按数值大小自定义排序

报错原因

pandas的sort_values方法中key参数接收的是完整的Series列对象,而非逐元素传入。你之前的写法lambda x: int(x[4:])是对整个Series做切片后尝试强转整型,必然触发类型错误。

解决方案

方案1(匹配固定前缀Numb)

如果你的col1值都是固定以4个字符的Numb为前缀,直接对Series调用字符串方法处理后转整型,同时兼容缺失值:

df.sort_values(
    by="col1",
    key=lambda x: x.str[4:].astype(int, errors="coerce")
)

说明:errors="coerce"会自动把无法转成整型的内容(包括你提到的缺失值)转换为NaN,排序时NaN默认排在末尾,你可以加na_position='first'参数将缺失值放在最前面。

方案2(适配任意前缀,鲁棒性更高)

如果后续前缀长度可能变化,可以用正则提取数字部分,无需依赖固定前缀长度:

df.sort_values(
    by="col1",
    key=lambda x: x.str.extract(r'(\d+)', expand=False).astype(int, errors="coerce")
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 02:54:04