Pandas 中使用其他列的条件样式

Conditional Styling in Pandas using other columns

我已经搜索过,但似乎无法在任何地方找到这方面的答案,所以希望这是可能的。我有一个数据框,为简单起见,我将在下面包含一个缩写版本。我想做的是应用自定义公式来设置样式,或者根据另一列中的值设置特定列的样式。

以此为例,我想突出显示当前列的单元格,其中 Diff > Historic Standard Dev 在该行中。

我探索了 style.apply 方法,但似乎找不到有效的方法。任何帮助将不胜感激。

谢谢!

您可以通过 Styler.apply 创建 DataFrame 种样式:

def select_col(x):
    c1 = 'background-color: red'
    c2 = '' 
    #compare columns
    mask = x['Diff'] > x['HistoricStandardDev']
    #DataFrame with same index and columns names as original filled empty strings
    df1 =  pd.DataFrame(c2, index=x.index, columns=x.columns)
    #modify values of df1 column by boolean mask
    df1.loc[mask, 'Current'] = c1
    return df1

df.style.apply(select_col, axis=None)