问题描述
原本使用的pandas1.0.5时,调用高亮最大值或最小值的方法时,可以不传任何参数,自动实现所有数值列最大值或最小值的高亮。以高亮最大值为例,效果如下:
df.style.highlight_max()
将pandas版本升级到目前最新的1.4.3之后,出现TypeError,具体描述是:
TypeError: '>=' not supported between instances of 'float' and 'str'
原因分析:
报错信息说的是,不能在“浮点数”类型实例和“字符串”类型中间比大小。我们推测,数据集既有字符串类型的列,也有数值类型的列。旧版本的Pandas能够自动忽略字符串列,只高亮数值列的最大值。新版本(这里指1.4.3)似乎失去了这个功能,试图在字符串列中寻找最大值,但逻辑运算符“>=”不支持字符串和浮点数之间的比较,从而报错。
解决方案:
必须在highlight_max()方法中传入subset参数指定要高亮最大值的列,该参数是这个方法的第一个参数。
如果只需高亮一列,可以直接传入列名字符串:
df.style.highlight_max('salary')
如果需要高亮多个列,可以传入列名的列表:
df.style.highlight_max(['salary', 'matchScore'])