Python Pandas - 突出显示数据框中的单元格

Sea*_*Ess 5 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
Run Code Online (Sandbox Code Playgroud)

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

它不会染色任何东西...我希望有人能帮助我。提前谢谢。

Shi*_*hir 2

尝试这个解决方案:

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)

Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

请注意,该解决方案基于我们讨论的线程。主要变化是突出显示功能内的条件。每次使用applymap都适用于单个单元格,并且无法访问其在数据框中的位置。每次使用apply都适用于单行,并且可以与同一行和不同列中的单元格进行比较。