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

使用pandas sort_values排序出现异常问题求助

问题分析与解决

核心问题大概率是h_price列的数据类型为字符串(object),而非数值类型(int/float)。

原因说明

当h_price是字符串时,max()和sort_values()会按字符串的字典序逻辑处理,而非数值大小:

  • 比如字符串"200"会被判定为大于"1000",因为第一个字符"2"的ASCII码比"1"高,这直接导致你看到的排序、最大值结果不符合预期。

排查与解决步骤

  1. 检查数据类型与内容
    先确认h_price的类型,同时查看是否包含非数值字符(如逗号、"元"等单位):
print(bond['h_price'].dtype)
print(bond['h_price'].head())
  1. 转换为数值类型
  • 如果h_price带非数值字符(如"1,500元"),先清理再转换:
bond['h_price'] = bond['h_price'].str.replace(',', '').str.replace('元', '').astype(float)
  • 如果只是纯字符串格式的数值,直接转换:
bond['h_price'] = bond['h_price'].astype(float)
  1. 重新执行目标操作
    转换完成后,再运行你的分组取最大值和排序代码,结果就会符合数值逻辑:
# 分组获取h_price最大值
df.groupby('h_type')['h_price'].max()
# 按h_price降序排序
a = bond.loc['mansion']
aMax = a.sort_values(['h_price'], ascending=False)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 11:40:40