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

Pandas按行取最大值报错‘str与float无法比较’,求解决方法

问题:计算DataFrame每行最大值时出现类型错误

原始DataFrame如下:

Server     1-Jun   6-Jun   1-jul  Jul-10
ServerA    8        9        5     90
ServerB    100      10      9     90

需求是新增一列maximumval,存储每个Server对应所有月份列的最大值,期望结果:

Server     1-Jun   6-Jun   1-jul  Jul-10  maximumval
ServerA    8        9        5     90       90
ServerB    100      10      9     90       100

尝试执行以下代码时出现报错:

df['maximumval'] = df.max(axis=1)

报错信息:

'>=' no supported between instances of 'str' and 'float'

错误原因

这个错误说明你的DataFrame里同时存在字符串类型(Server列的文本值)和数值类型,调用max(axis=1)时,Python会尝试对整行所有元素做大小比较,但字符串和数值之间不支持>=这类比较操作,因此触发错误。

解决方法

只针对数值列(即月份相关的列)计算每行最大值,有两种常用方式:

  1. 排除非数值列(指定列名)
    直接移除Server列后再计算最大值:
df['maximumval'] = df.drop('Server', axis=1).max(axis=1)
  1. 自动筛选数值类型列
    通过select_dtypes筛选出所有数值类型的列,再计算最大值,适合列数较多的场景:
df['maximumval'] = df.select_dtypes(include=['number']).max(axis=1)

执行上述任意一种方法后,就能得到符合预期的DataFrame。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 04:27:05