如何根据单元格位置设置背景颜色?

时间:2021-03-12 20:31:21

标签: pandas

我需要根据单元格的位置而不是单元格的内容在数据框中设置背景颜色。

考虑这个数据框:

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

想要的结果,对 excel 屏幕截图表示歉意:

Playground link to code

我想根据位置选择特定范围的单元格:

bg_color_range = df.loc[1:3,'B':'C']

并将它们的背景设置为绿色:

def bg_green(x):
    return 'background-color: lime'

df.style.applymap(bg_green, bg_color_range)

但这给出了 KeyError: "None of [Index(['B'], dtype='object')] are in the [index]",我不知道如何告诉 .style.applymap 操作的单元格范围。

2 个答案:

答案 0 :(得分:2)

apply试试axis=None

def bg_green(df):
    ret = pd.DataFrame('', index=df.index, columns=df.columns)
    ret.loc[1:3, 'B':'C'] = 'background-color: lime'
    return ret

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

输出:

enter image description here

答案 1 :(得分:2)

您可以将 applymapsubset 参数与 pd.IndexSlice 一起使用,例如:

df.style.applymap(bg_green, subset=pd.IndexSlice[1:3, 'B':'C'])