首页 > 解决方案 > Python Pandas - 突出显示数据框中的单元格

问题描述

我想测试一列的值是否大于同一数据框的另一个特定值。如果值更大,我想突出显示这个特定的单元格。

我试过这个:

import pandas as pd

b = pd.DataFrame([[5,7,3],[2,3,4],[8,4,7]])

for i in range(0, len(b)):
    for j in range(0, len(b.columns)):
        if  b.iloc[i][j] >  b.iloc[2][j]:
            b.style.applymap(lambda  x: 'background-color : blue' if b.iloc[i][j] >  b.iloc[2][j] else '') 

b

所以在这个例子中,我想检查 5 或 7 是否大于 3(第 1 列)、2 或 3 是否大于 4(第 2 列)以及 8 或 4 是否大于 7。

它没有任何颜色......我希望有人可以帮助我。提前谢谢。

标签: pythonpandas

解决方案


试试这个解决方案:

import pandas as pd
import numpy as np

df = pd.DataFrame([[5,7,8],[2,3,4],[8,4,9]])

def highlight(s):
    '''
    highlight the maximum in a Series.
    '''
    is_max = s >= s[2]
    return ['background-color: blue' if v else '' for v in is_max]

df.style.apply(highlight, axis=0)

在此处输入图像描述

请注意,该解决方案基于我们讨论的线程。主要变化是高亮函数内部的条件。Usingapplymap每次都在单个单元格上工作,并且无法访问其在数据框中的位置。Usingapply每次都在一行上工作,并且可以与同一行和不同列中的单元格进行比较。


推荐阅读