我有一个包含几列的数据框和一个与每列关联的颜色的列表。我想用相关的颜色突出显示每列中的非空白单元格。

我尝试过以各种方式遍历列。与成功最接近的事情是将for循环放入样式函数中,并将其应用到for循环中。这会正确突出显示最后一列,而不突出显示其余的列。

df=pd.DataFrame({'a':[1,2,3,4],'b':['','',1,''],'c':['a','b','c','']})
df_column_colors=['red','blue','green']

def highlight_cells(value):
    if value=='':
        background_color=None
    else:
        for v in range(len(df_column_colors)):
            background_color=str(df_column_colors[v])
    return 'background-color: %s' % background_color
for i in range(len(df.columns)):
     df2=df.style.applymap(highlight_cells,subset=df.columns[i])

最佳答案

您可以按照以下步骤进行操作:

d= dict(zip(df.columns,['background-color:'+i for i in df_column_colors]))
#{'a': 'background-color:red', 'b': 'background-color:blue', 'c': 'background-color:green'}
def mycolor(x):
    s=pd.DataFrame(d,index=x.index,columns=x.columns)
    df1=x.mask(x.replace('',np.nan).notna(),s)
    return df1
df.style.apply(mycolor,axis=None)




python -  Pandas 样式中每列的颜色不同-LMLPHP

关于python - Pandas 样式中每列的颜色不同,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57116827/

10-12 21:43