如何在pandas

时间:2016-10-31 00:31:52

标签: 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])

enter image description here

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

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

enter image description here

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

2 个答案:

答案 0 :(得分:7)

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

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

enter image description here

或者如果你有颜色偏好:

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

enter image description here

答案 1 :(得分:1)

您还可以链接样式:

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])\
.apply(lambda x: ['background: lightgreen' if x.name == 0 else '' for i in x], axis=1)