如何在熊猫数据框中用不同颜色为布尔值着色

Posted

技术标签:

【中文标题】如何在熊猫数据框中用不同颜色为布尔值着色【英文标题】:How to color boolean values by different colors in pandas dataframe 【发布时间】:2019-04-11 17:45:06 【问题描述】:
Customer_id   Name    Age  Balance
        Q1   True   True     True
        W2   True   True     True
        E3   True  False     True
        T5   True   True    False
        Y6   True   True     True
        U7   True   True     True
        I8  False  False    False
        O9   True  False    False
        P0  False  False    False

我想在上面的数据框中用黄色突出显示或着色单词'TRUE'

这是我尝试过的代码:

def color_negative_red(val):
    color = 'yellow' if val == 'TRUE' else 'black'
    return 'color: %s' % color
df = dataframe.style.\
       apply(color_negative_red).\
       to_excel('df.xlsx')

我收到以下错误

ValueError: ('The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().', 'occurred at index Customer_id')

我在这里做错了什么?

【问题讨论】:

【参考方案1】:

使用Styler.applymap 代替apply

dataframe.style.\
       applymap(color_negative_red).\
       to_excel('df.xlsx')

您还可以通过True(如果是布尔值)和'True'(如果是字符串)进行比较:

def color_negative_red(val):
    color = 'yellow' if val == True else 'black'
    return 'color: %s' % color

#python 3.6+ with f-strings
def color_negative_red(val):
    color = 'yellow' if val == True else 'black'
    return f'color: color'

#python bellow 3.6
def color_negative_red(val):
    color = 'yellow' if val == True else 'black'
    return 'color: '.format(color)

如果还想删除索引值:

dataframe.style.\
       applymap(color_negative_red).\
       to_excel('df.xlsx', index=False)

【讨论】:

【参考方案2】:

试试这个(这里你可以使用apply):

def f(x):
    df = x.copy()
    for i in df.columns:
        df.loc[df[i]=='TRUE',i]=='background-color: yellow'
    return df    

df=df.style.apply(f, axis=None)

【讨论】:

使用上一个带有applymap的代码,'True'和'FALSE'的背景颜色都变黑了 @pytorch 已编辑评论,那么现在呢?

以上是关于如何在熊猫数据框中用不同颜色为布尔值着色的主要内容,如果未能解决你的问题,请参考以下文章

如何根据不同df中提供的索引值对数据框中的特定列进行求和。返回总和和布尔 T/F

Opengl顶点着色器为每个顶点设置布尔值(glVertexAttribPointer)

如何在熊猫中用空列表[]填充数据框Nan值?

是否的逻辑值如何表示?图片,视频,文件如何储存如何表示

根据另一列熊猫设置列等于值

pandas 数据框将 INT64 列转换为布尔值