python - 基于 boolean pandas df 的高亮元素

标签 python pandas dataframe pandas-styles

我有 2 个具有相同索引/列的数据框:

df = pd.DataFrame({'A':[5.5, 3, 0, 3, 1],
                     'B':[2, 1, 0.2, 4, 5],
                     'C':[3, 1, 3.5, 6, 0]})

df_bool = pd.DataFrame({'A':[0, 1, 0, 0, 1],
                          'B':[0, 0, 1, 0, 0],
                          'C':[1, 1, 1, 0, 0]})

我想使用 df_bool 作为掩码将样式函数应用于 df 元素。

这是预期的结果:

expected results

当前失败的函数

def color_boolean(val):
  color =''
  if df_bool == 1:
    color = 'red'
  elif df_bool == 0:
    color = 'black'
  return f'color: {color}'

df.head().style.apply(color_boolean, axis=None)
ValueError: The truth value of a DataFrame is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

最佳答案

您可以使用忽略输入并仅使用其他 DataFrame 的函数:

def color_boolean(val):
    return f'color: {"red" if val else "black"}'

df.style.apply(lambda _: df_bool.applymap(color_boolean), axis=None)

或:

df.style.apply(lambda c: df_bool[c.name].apply(color_boolean))

输出:

dataframe style

关于python - 基于 boolean pandas df 的高亮元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72236704/

相关文章:

python - 解析括号

python - 如何知道我使用的是哪个版本的 pandas-profiling?

python - 我怎样才能在子集上进行计算, Pandas 的方式,而不循环

python - Pandas DataFrame.drop_duplicates() 缺少一些东西?

R:按值选择行并始终包含上一行

python - Pandas 中的 Groupby、map 和 sum 导致 NaN

python - 如何编写扩展的 gtk.CellRendererText() 以在文本旁边显示图像

python - 如何根据各种过滤器过滤掉重复项

r - 使用带有索引的矩阵从数据框中选择多个值

python - 为什么 LinkClicked 不起作用,而 LinkHovered PyQt4 起作用?