按索引突出显示(颜色)熊猫数据框

时间:2018-04-30 12:32:35

标签: python-3.x pandas dataframe conditional-formatting

我有两个数据框df1:

d1 = {"col1" : ['A', 'B', 'C'],
      "Col2": ["home", "car","banana" ]}

d2 = {"col1" : ['D', 'F','C'],
      "Col2": ["garden", "boat","banana" ]}

df1 = pd.DataFrame(data=d1)
df2 = pd.DataFrame(data=d2)

new_df = pd.merge(df1, df2,  on ='col1', how='outer')
new_df

所以我要做的是突出第三行" banana"这是在两个数据框中找到的。 我正在使用Styling documentation找到解决方案,但没有运气。 我只能突出显示一行,但是当我有多行时它不起作用。 请伸出援助之手

2 个答案:

答案 0 :(得分:2)

如果你想要突出显示两行(比如索引2和4),它几乎与此answer重复

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

如果您希望突出显示列表中包含给定名称的每一行(即lst = ['car', 'boat']),您可以使用

new_df.style.apply(lambda x: ['background: lightgreen' if (set(lst).intersection(x.values)) 
                              else '' for i in x], 
                   axis=1)

答案 1 :(得分:1)

这里有很多有关样式化DataFrame行的问题,因此尽管公认的答案对我不起作用,而且熊猫也没有有用的错误消息,但我还是一直来这里。我只是指出,尽管可接受的答案可能适用于html或Jupyter或他们正在使用的任何内容。将其应用于 Excel 时不起作用。 对于 Excel ,您需要满足以下条件:

new_df.style.apply(
    lambda x: ['background-color: <color>' if x.name in [2,4] else '' for i in x],
    axis=1
)

请注意使用“背景色” 。 Excel不会像您期望的那样呈现“背景”

此外,在使用Excel时,您需要使用颜色名称。从Excel的公认颜色列表中,使用“浅绿色”修饰上面的答案可能会给您黑黑的感觉……可能不是。任何人正在寻找的东西。