根据两种不同的条件突出显示熊猫数据框列

我有以下数据框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

我有这个功能,可以根据是否突出显示整行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)

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


但我似乎无法将该条件应用到我的函数中。


有什么帮助吗?


元芳怎么了
浏览 229回答 2
2回答

绝地无双

创建另一个掩码并以相同的方式传递,同样对于默认空值使用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

拉莫斯之舞

另一种方法是定义一个函数,这样你就可以在行上应用: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)输出:
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python