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

pandas计算各列min、max时如何排除索引值解决ValueError报错

问题场景
  • 存在一个Pandas DataFrame对象df_thd_funct_mode1_T,结构如下图:
    原始DataFrame结构
  • 需求为计算每一列的最小值和最大值,最初编写代码如下:
df_thd_funct_mode1_T.agg([min, max])
  • 代码运行后返回的结果额外包含了索引的min、max统计值,不符合预期,运行结果如下图:
    初始代码运行结果(含多余索引统计值)
  • 为排除多余的索引统计内容,修改代码传入axis="columns"参数:
df_thd_funct_mode1_T.agg([min, max],axis="columns")
  • 修改后代码运行抛出错误:ValueError: no results
问题原因
  • 初始代码返回索引统计值的核心原因:从变量名后缀_T可以判断该DataFrame经过转置操作,转置过程中原索引/列名容易残留为数据列,默认按列聚合时,这部分数值型的残留索引内容会被当成普通数据列参与计算,最终输出你看到的多余统计结果。
  • 加axis="columns"报错的原因:agg方法的axis参数中,axis=0(默认值)才是按列执行聚合,axis="columns"/axis=1的作用是按行执行聚合,和你要统计每列最值的需求完全相反;多聚合函数+按行聚合+未明确指定计算列的组合,在部分Pandas版本中会直接触发ValueError: no results错误。
正确实现方案

按需选择以下任意一种写法,均可实现仅计算各列min、max且不返回索引统计值的需求:

  1. 自动筛选所有数值类型列做聚合,自动过滤非数据的索引残留:
df_thd_funct_mode1_T.select_dtypes(include="number").agg([min, max])
  1. 手动指定统计列范围,适合仅需统计部分列的场景:
# 可根据需求替换为实际需要统计的列名列表
target_columns = df_thd_funct_mode1_T.columns.tolist()
df_thd_funct_mode1_T[target_columns].agg([min, max])
  1. 利用描述性统计接口定向提取最值,该接口天然不会将索引纳入统计范围:
df_thd_funct_mode1_T.describe().loc[["min", "max"]]

补充提示:如果使用转置操作生成DataFrame,建议转置后先执行.reset_index(drop=True)清理残留的旧索引,避免后续其他数据处理、统计操作出现同类问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 14:48:21