在 python 中设置(非唯一)多级索引数据框的子集样式

问题描述 投票:0回答:0

出于说明目的,我有以下数据框:

`

arrays = [np.array(['Jack', 'Jack', 'Jack', 'Jack', 'Jack', 'Jack', 'Jack', 'Josh', 'Josh', 'Josh', 'Josh', 'Josh', 'Peter', 'Peter', 'Peter', 'Peter', 'Peter']),
np.array(['Client A', 'Client A', 'Client A', 'Client A', 'Client B', 'Client B', 'Client B', 'Client C', 'Client C', 'Client D', 'Client D', 'Client D', 'Client E', 'Client E', 'Client E', 'Client E', 'Client E']),
np.array(['Cars', 'Trains', 'Planes', 'Boats', 'Cars', 'Trains', 'Boats',  'Cars', 'Trains', 'Cars', 'Trains', 'Planes', 'Cars', 'Trains', 'Planes', 'Boats', 'Bikes'])]

df = pd.DataFrame(np.random.randn(17, 5)+100, index=arrays)
df.columns = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
df.index.set_names(['Sales person', 'Client', 'Product'], inplace=True)

`

这基本上是销售人员/客户/产品的销售概述。

对于“产品”等于“汽车”的所有行,我想对该行的销售数字应用背景渐变。同样,对于 Product 等于 Trains 的所有行,我想应用文本渐变。对于这篇文章的长度,我将只关注背景渐变部分,因为文本渐变在执行方面是相似的。作为额外的,我不知道这是否可能,对于没有数字的单元格,我希望它们具有灰色背景颜色,并且我想要索引本身的单元格(因此包含汽车的索引单元格)具有相同的灰色背景颜色。如果有的话那就太好了,主要关注点是不同子集的渐变背景/文本颜色。

我看到了类似的帖子“如何设置 pandas 数据框子集的样式?”我尝试将其用作基础并最终执行了以下操作:

我的颜色图是

cmap = matplotlib.colors.ListedColormap(["Red", "Green"])
并使用索引切片,我得到了

`

idx = pd.IndexSlice
df = df.style.background_gradient(cmap=cmap, axis=1, subset=df.loc[idx[:, :, 'Cars'], :])

`

然而,这并没有按预期设置数据框的样式。出现以下警告:C:\ProgramData naconda3\lib\site-packages\IPytho

python pandas dataframe background-color
© www.soinside.com 2019 - 2024. All rights reserved.