如何在Pandas中为不同行创建热图?

mwg9r5ms  于 2022-12-21  发布在  其他
关注(0)|答案(1)|浏览(137)

下面是我正在使用的示例数据/脚本。我试图从这些数据创建两个不同的热图比例。
因此,ID 1行应该具有红色、绿色和黄色的热图颜色,ID 2和ID 3应该具有红色、绿色和黄色的热图反转颜色。
我认为问题来自于定义C1和C2。任何帮助都将不胜感激。

import pandas as pd
import numpy as np

index = ['ID1','ID2','ID3']
cols = ['A','B','C','D']

df=pd.DataFrame(abs(np.random.randn(3, 4)), index=index, columns=cols)

c1 =  'cmap:RdYlGn'   # Heatmap for red green yellow color
c2 =  'cmap:RdYlGn_r'   # reverse heatmap for red green yellow color
d = {'ID1':c1,'ID2':c2,'ID3':c2}

df.style.apply(lambda x: x.index.map(d))

#ID1 should get RdYlGn heatmap and #ID2 and ID3 should get RdYlGn_r heatmap.
vktxenjb

vktxenjb1#

以下是使用Pandas background_gradient和IndexSlice执行此操作的一种方法:

styler = df.style
for idx, cmap in {"ID1": "RdYlGn", "ID2": "RdYlGn_r", "ID3": "RdYlGn_r"}.items():
    styler = styler.background_gradient(cmap=cmap, subset=pd.IndexSlice[idx, :], axis=1)

然后,在Jupyter笔记本计算单元中运行styler,得到:

相关问题