且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

Python Pandas-在列中突出显示最大值

更新时间:2022-12-10 14:19:35

存在一个问题,您需要将值转换为浮点数以获取正确的max,因为获取字符串的最大值-9更多地是1:

There is problem you need convert values to floats for correct max, because get max value of strings - 9 is more as 1:

def highlight_max(data, color='yellow'):
    '''
    highlight the maximum in a Series or DataFrame
    '''
    attr = 'background-color: {}'.format(color)
    #remove % and cast to float
    data = data.replace('%','', regex=True).astype(float)
    if data.ndim == 1:  # Series from .apply(axis=0) or axis=1
        is_max = data == data.max()
        return [attr if v else '' for v in is_max]
    else:  # from .apply(axis=None)
        is_max = data == data.max().max()
        return pd.DataFrame(np.where(is_max, attr, ''),
                            index=data.index, columns=data.columns)

示例:

dfPercent = pd.DataFrame({'2014/2015':['10.3%','9.7%','9.2%'],
                   '2015/2016':['4.8%','100.8%','9.7%']})
print (dfPercent)
  2014/2015 2015/2016
0     10.3%      4.8%
1      9.7%    100.8%
2      9.2%      9.7%