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

如何在Pandas DataFrame中获取所有列(含非数值型)的最大值?

实现DataFrame所有列(含非数值型)的最大值计算

问题的核心在于Pandas中DataFrame.max()方法的numeric_only参数默认行为——当设置为None时,它会先尝试计算所有列,但受版本逻辑影响,可能自动过滤掉非数值列(比如字符串列)。要实现包含所有列的最大值输出,你可以试试以下两种方法:

方法1:显式设置numeric_only=False

直接在max()方法中指定numeric_only=False,强制Pandas处理所有列(只要列的元素类型支持max操作,比如字符串会按字典序比较):

import pandas as pd

# 构造你的DataFrame
data = pd.DataFrame({
    'Col_1': [5, 10],
    'Col_2': ['xyz', 'abcd'],
    'Col_3': [76, 100]
})

# 计算所有列的最大值并转成你需要的格式
max_value = data.max(numeric_only=False).to_frame().T
print(max_value)

输出结果:

Col_1 Col_2  Col_3
0     10   xyz    100

方法2:使用apply逐列计算最大值

如果第一种方法因为版本兼容问题不生效,可以用apply遍历每一列,单独计算最大值:

max_value = data.apply(lambda col: col.max()).to_frame().T
print(max_value)

这个方法更通用,不管列类型是什么(只要该列的元素支持max运算),都会返回对应的最大值:

  • 数值列返回数值最大值
  • 字符串列返回字典序最大的字符串
  • 日期列返回最晚的日期值

需要注意的是,如果DataFrame中存在无法比较的混合类型列(比如同一列既包含字符串又包含数值),两种方法都会抛出错误,此时需要先清洗数据或单独处理该列。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:21:20