如果包含特定字符串,则将列设置为Pandas样式

raogr8fs  于 2023-02-11  发布在  其他
关注(0)|答案(1)|浏览(79)

我有一个Pandas Dataframe ,我想样式一个特定的列,如果行包含一个特定的字符串。这里是函数的使用和我如何调用它。

def color_code(value):
    match_b = re.search(r'\bball\b',value)
    match_c =re.search(r'\bcar\b',value)
    if match_b == True:
        color = 'red'
    elif match_c ==True:
        color = 'yellow'
    else:
        return
    return f'background-color: {color}'

res=df.applymap(color_code,subset['Interest'])

假设我有这样一个专栏

Interest
coin
racecar
bumper-car
ball
beachball
volley ball
base-ball
bat
car
beach
nascar
remote car

只要值中包含ball或car,我就希望单元格具有颜色,但我找不到这样做的方法。我只能在值与“ball”或“car”完全相同时找到为单元格着色的方法
这就是我想要的输出类型

plicqrtu

plicqrtu1#

删除单词边界\b\b

def color_code(value):
    match_b = re.search(r'ball',value)
    match_c = re.search(r'car',value)
    
    if match_b:
        color = 'red'
    elif match_c:
        color = 'yellow'
    else:
        color='white'
    print (color)
    return f'background-color: {color}'

res=df.style.applymap(color_code,subset=['Interest'])

或者:

def color_code(value):
    if 'ball' in value:
        color = 'red'
    elif 'car' in value:
        color = 'yellow'
    else:
        color='white'
    print (color)
    return f'background-color: {color}'

相关问题