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

为何Pandas DataFrame使用sort_values无法正常排序?

解决DataFrame多列排序后Total列混乱的问题

首先排查最常见的核心原因:Total列的数据类型不是数值型。如果Total列是字符串类型(比如读取CSV时附带了货币符号、逗号等非数值字符),排序时会按字符顺序而非数值大小排列,自然会出现看起来混乱的结果。

步骤1:检查Total列的数据类型

先运行以下代码确认列类型:

print(officeSuppliesDf['Total'].dtype)

如果输出是object,说明该列是字符串类型,需要进行转换。

步骤2:转换Total列为数值类型

如果Total列包含$、逗号这类非数值字符,先清理再转换:

import pandas as pd

# 移除非数值字符,转换为数值类型,无法转换的内容设为NaN
officeSuppliesDf['Total'] = pd.to_numeric(
    officeSuppliesDf['Total'].replace(r'[\$,]', '', regex=True),
    errors='coerce'
)

步骤3:重新执行排序

转换完成后再运行排序代码,也可以先不使用inplace参数验证结果:

sorted_df = officeSuppliesDf.sort_values(
    by=['Region', 'Total'],
    ascending=[True, False]
)
print(sorted_df)

其他排查点

  • 如果Total列存在NaN值,默认会排在对应Region组的末尾,可通过na_position参数调整位置(比如na_position='first'让NaN排在组内最前面)。
  • 确认查看的是完整排序结果:多列排序规则是先按Region升序分组,仅在同一Region组内按Total降序排列,不同Region之间的Total无需保持整体降序。

内容的提问来源于stack exchange,提问作者Amitai Rodrigues Garcia

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 03:55:18