如何在pandas中同时突出显示行和列

max*_*moo 11 python pandas

我可以使用语法突出显示一列

import pandas as pd
df = pd.DataFrame([[1,0],[0,1]])
df.style.apply(lambda x: ['background: lightblue' if x.name == 0 else '' for i in x])
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

同样,我可以通过传递突出显示一行axis=1:

df.style.apply(lambda x: ['background: lightgreen' if x.name == 0 else '' for i in x], 
               axis=1)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

但是,我无法弄清楚如何同时做两件事; 问题是,当我使用时applymap,我只获取值,而不是它们来自的系列的名称.

Psi*_*dom 9

做这样的事情怎么样?在构建样式列表时枚举列并检查索引:

df.style.apply(lambda x: ['background: lightblue' if x.name == 0 or i == 0 else '' 
                          for i,_ in x.iteritems()])
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

或者,如果您有颜色偏好:

df.style.apply(lambda x: [('background: lightblue' if x.name == 0 
                            else ('background: lightgreen' if i == 0 else '')) 
                            for i,_ in x.iteritems()])
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述