为了账号安全,请及时绑定邮箱和手机立即绑定

如何链接 pandas 中样式函数的条件?

如何链接 pandas 中样式函数的条件?

Smart猫小萌 2023-10-06 10:51:43
这就是我想要实现的目标我确实有一个 Pandas Dataframe - 例如这个:            0           1           20  110.718803  119.821042  -52.5935181   65.180254   33.518722  -69.8936882 -135.652788  -64.711718 -241.7178193  237.781393  -56.865142   15.9697674  141.585158  138.904568 -115.1550635   10.030938  -59.274415   73.3281276  106.937681   -3.604859   44.4189387  -49.478211  -91.574908  160.3406278  170.744019  -85.764809  246.1418579  -94.246832   81.069700 -113.460438基于 3 个条件,单元格的背景颜色应该不同:单元格 <= 0 应为红色单元格 >= 100 应为蓝色所有其他单元格这就是我为实现这一目标所做的我编写了这个函数(基于 Pandas 文档Pandas 样式中的信息:def highlight_number(row):    return [        'background-color: red; color: white' if cell <= 0        else 'background-color: green; color: white'        for cell in row    ]df.style.apply(highlight_number)它适用于两种情况。这是我的问题我尝试了不同的方法将第三个条件添加到上面的函数中,但总是返回错误。您能给我提示如何在列表中添加条件吗?我没有找到答案。多谢。
查看完整描述

2 回答

?
泛舟湖上清波郎朗

TA贡献1818条经验 获得超3个赞

您可以编写普通的 for 循环而不是列表理解。


def highlight_number(row):

    arr = []

    for cell in row:

        if  cell <= 0:

            arr.append('background-color: red; color: white')

        elif cell >= 100:

            arr.append('background-color: blue; color: white')

        else:

            arr.append('background-color: white; color: black')

    return arr

df.style.apply(highlight_number)

输出:

https://img1.sycdn.imooc.com//651f767a000124c503030328.jpg

查看完整回答
反对 回复 2023-10-06
?
白猪掌柜的

TA贡献1893条经验 获得超10个赞

我觉得最简单的方法是使用np.select它接受条件列表和选择列表(就像 if elif 并且也像 else 一样接受默认值)并修改你的函数并使用它,axis=None因为我们正在应用于整个数据帧(注意你也可用于subset列的子集)

def highlight_number(dataframe):

    

    conditions = [dataframe <=0,(dataframe>0) & (dataframe>=100)] #your conditions

    choices = ['background-color: red; color: white',

               'background-color: blue; color: white']

    arr = np.select(conditions,choices,'background-color: white; color: black')

    return pd.DataFrame(arr,index=dataframe.index,columns=dataframe.columns)



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

https://img1.sycdn.imooc.com//651f768c0001474703350445.jpg

查看完整回答
反对 回复 2023-10-06
  • 2 回答
  • 0 关注
  • 74 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信