如何在一次.style调用中同时实现行最大值高亮与数值百分比格式化?
解决方法
pandas 的 Styler 对象支持方法链式调用,你只需要按顺序拼接格式设置、样式应用的两个方法即可,不需要拆分多次调用。
完整实现代码如下:
import pandas as pd import numpy as np # 示例数据 df = pd.DataFrame({'text' : ['hello world'], 'var1' : [0.1], 'var2' : [0.2]}) # 高亮最大值函数 def highlight_max(s, props = ''): return np.where(s == np.nanmax(s.values), props, '') # 单次调用同时实现两个效果,axis=1代表按行计算最大值 df.style.format( {'var1' : '{:,.2%}'.format, 'var2' : '{:,.2%}'.format} ).apply(highlight_max, axis=1, props='color: red;')
注意事项
apply方法必须指定axis=1才会按行匹配最大值,默认axis=0是按列计算最大值props参数可自定义样式,比如需要背景标红可以改为background-color: #ff7875;- 如果要限定高亮仅作用在数值列,可以在
apply方法补充subset=['var1','var2']参数,避免改动文本列的样式
内容的提问来源于stack exchange,提问作者ℕʘʘḆḽḘ
相关产品推荐
相关产品推荐

