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

pandas DataFrame首列升序排序异常问题求助

问题原因

你的数据列类型是object(字符串类型),字符串排序是按字典序比较的——比如'13'的第一个字符是'1','2'的第一个字符是'2','1'的ASCII码比'2'小,所以'13'会排在'2'前面,这就是排序不符合预期的根本原因。

解决方案

先把该列转换为数值类型(整数或浮点数),再执行排序操作。

修改后的代码

方式一:直接转换为Series后排序

import pandas as pd

# 将首列转换为数值类型,errors='coerce'会把无法转换的值转为NaN(你的数据都是数字,可省略,但加上更健壮)
happydflist = pd.to_numeric(happydflist[happydflist.columns[0]], errors='coerce')
# 执行升序排序
happydflistnew = happydflist.sort_values(ascending=True)
print(happydflistnew)

方式二:保留DataFrame结构排序

如果你想保留原DataFrame的结构,只对首列排序:

import pandas as pd

# 先把首列转成数值类型
happydflist[happydflist.columns[0]] = pd.to_numeric(happydflist[happydflist.columns[0]], errors='coerce')
# 指定按首列排序
happydflistnew = happydflist.sort_values(by=happydflist.columns[0], ascending=True)
print(happydflistnew)

验证效果

转换后排序的结果会按数值大小升序排列,比如2、3、8、13、19...这样的顺序,符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 09:41:18