根据它们的相对值为熊猫中的细胞着色

时间:2019-04-19 18:37:55

标签: python python-3.x pandas

我想根据(python)pandas数据框的单元格是否着色,以使它们的值分别位于此列中数据的前5%,前10%,...,最后10%,最后5% 。

根据本文Coloring Cells in Pandas,可以定义一个函数,然后将其应用于数据框。

如果要在固定范围内为单元格上色,则可以正常工作。 但是,如果您只想对前5%进行着色,则需要获取有关该列的所有信息。因此,您不能应用仅评估每个单元格的函数。

因此我的问题是: 有没有一种聪明的方法可以为每一列的数据帧的前5%,10%...着色?

1 个答案:

答案 0 :(得分:0)

尝试一下:

df = pd.DataFrame(np.arange(100).reshape(20,-1))

def colorme(x):
    c = x.rank(pct=True)
    c = np.select([c<=.05,c<=.10,c>=.95,c>=.90],['red','orange','yellow','green'])
    return [f'background-color: {i}' for i in c]

df.style.apply(colorme)

enter image description here