标签: python python-3.x pandas
我想根据(python)pandas数据框的单元格是否着色,以使它们的值分别位于此列中数据的前5%,前10%,...,最后10%,最后5% 。
根据本文Coloring Cells in Pandas,可以定义一个函数,然后将其应用于数据框。
如果要在固定范围内为单元格上色,则可以正常工作。 但是,如果您只想对前5%进行着色,则需要获取有关该列的所有信息。因此,您不能应用仅评估每个单元格的函数。
因此我的问题是: 有没有一种聪明的方法可以为每一列的数据帧的前5%,10%...着色?
答案 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)