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

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

我有两个数据框:

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

我想做的是突出显示在两个数据帧中找到的第三行“香蕉”。 我正在使用 Styling Documentation 来寻找解决方案,但没有成功。 我只能突出显示一行,但是当我有多行时,它不起作用。

python pandas dataframe conditional-formatting
2个回答
8
投票

如果您想突出显示两行(例如索引 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)

2
投票

这里有很多关于 DataFrame 行样式的问题链接,所以我一直来到这里,尽管接受的答案对我不起作用,并且没有来自 pandas 的有用错误消息。我只是想指出,虽然接受的答案可能适用于 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 的可识别颜色列表中,使用“浅绿色”摆弄上述答案可能会给您黑底黑字...可能不是任何人的结果正在寻找。

© www.soinside.com 2019 - 2024. All rights reserved.