繁体   English   中英

基于两种不同条件突出显示 pandas dataframe 列

[英]Highlight pandas dataframe columns based on two different conditions

我有以下 dataframe comp

    time        first_max   name             second_max name.1      Perceived OoM.1 Perceived OoM.2
0   0.000000    18          shoulder_center  9          right_hip   shoulder_center shoulder_center
1   0.010000    18          shoulder_center  9          right_hip   shoulder_center shoulder_center
2   0.020000    18          right_hip        9          right_hip   shoulder_center right_hip
3   0.030000    18          shoulder_center  9          right_hip   shoulder_center right_hip

我有这个 function 根据name == Perceived OoM.1突出显示整行:

def highlight_col(x):
    df = x.copy()
    mask = df['name'] == df['Perceived OoM.1']
    df.loc[mask, :] = 'background-color: yellow'
    df.loc[~mask,:] = 'background-color: ""'
    return df

comp.style.apply(highlight_col, axis=None)

但是,如果name == Perceived OoM.2 ,我想找出一种方法为整行着色另一种颜色。 基本上,如果 name == Perceived OoM.1 我希望该行为黄色,否则如果name == Perceived OoM.2 name == Perceived OoM.1该行为蓝色。

但我似乎无法在我的 function 中使用这种情况。

有什么帮助吗?

创建另一个掩码并以相同的方式传递,也使用默认空值DataFrame构造函数:

def highlight_col(x):
    df = pd.DataFrame('', index=x.index, columns=x.columns)
    mask1 = x['name'] == x['Perceived OoM.1']
    mask2 = x['name'] == x['Perceived OoM.2']
    df.loc[mask1, :] = 'background-color: yellow'
    df.loc[mask2, :] = 'background-color: blue'
    return df

另一种方法是定义 function 以便您可以应用于行:

def highlight(x):
    color = 'background-color:yellow' if  x['name']==x['Perceived OoM.1']\
            else 'background-color: green' if x['name']==x['Perceived OoM.2']\
            else ''
    return [color]*len(x)

df.style.apply(highlight, axis=1)

Output:

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM