当前位置:  开发笔记 > 编程语言 > 正文

Pandas样式功能可以突出特定列

如何解决《Pandas样式功能可以突出特定列》经验,为你挑选了2个好方法。

我一直在尝试编写一个与pandas风格一起使用的函数.我想要在参数中指定的高列.这不是很优雅,但例如:

data =  pd.DataFrame(np.random.randn(5, 3), columns=list('ABC'))

def highlight_cols(df, cols, colcolor = 'gray'):
    for col in cols:
        for dfcol in df.columns:
            if col == cols:
                color = colcolor
    return ['background-color: %s' % color]*df.shape[0]

然后打电话:

data.style.apply(highlight_cols(cols=['B','C']))

我收到一个错误:("'系列'对象没有属性'列'")

我认为我从根本上不太明白样式器如何调用和应用该函数.

谢谢,



1> jezrael..:

我想你可以使用切片中Styles的选择列B,并CStyler.applymap为按元素的风格.

import pandas as pd
import numpy as np

data =  pd.DataFrame(np.random.randn(5, 3), columns=list('ABC'))
#print (data)

def highlight_cols(s):
    color = 'grey'
    return 'background-color: %s' % color

data.style.applymap(highlight_cols, subset=pd.IndexSlice[:, ['B', 'C']])

PIC

如果您想要更多颜色或更灵活,请使用Styler.apply(func, axis=None),该函数必须返回DataFrame具有相同索引和列标签的a:

import pandas as pd
import numpy as np

data =  pd.DataFrame(np.random.randn(5, 3), columns=list('ABC'))
#print (data)

def highlight_cols(x):
    #copy df to new - original data are not changed
    df = x.copy()
    #select all values to default value - red color
    df.loc[:,:] = 'background-color: red'
    #overwrite values grey color
    df[['B','C']] = 'background-color: grey'
    #return color df
    return df    

data.style.apply(highlight_cols, axis=None)

PIC1



2> MaxU..:

你可以更动态地做到这一点:

data =  pd.DataFrame(np.random.randn(5, 3), columns=list('ABC'))

# dictionary of column colors
coldict = {'A':'grey', 'C':'yellow'}

def highlight_cols(s, coldict):
    if s.name in coldict.keys():
        return ['background-color: {}'.format(coldict[s.name])] * len(s)
    return [''] * len(s)

data.style.apply(highlight_cols, coldict=coldict)

在此输入图像描述

推荐阅读
Gbom2402851125
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有