有条件地格式化Python pandas cell

tha*_*eow 4 python conditional-formatting highlight dataframe pandas

我试图根据单元格的值来着色,突出显示或改变对Python pandas DataFrame的喜爱.例如,如果每行上的单元格大于该行第一列中的单元格,则将单元格突出显示为红色(或任何其他颜色),否则保持原样.

我在这里写了一个for循环:

for index in range(0, df.shape[0]):
    for column in range(1, df.shape[1]): # from 1 not from 0 because I only need # to compare the 2nd to the last cell of each row with the 1st cell in the row 

        if df.iloc[index][column] - df_BDE_n_months_avg_std_pct.iloc[index][0] > 0:
            then "PLEASE PUT YOUR HELP HERE, I NEED A PIECE OF CODE THAT CAN HIGHLIGHT THE CELL"
        else:
            "DO NOTHING"
Run Code Online (Sandbox Code Playgroud)

到目前为止,我还没有找到办法.任何帮助都会很棒.

Zoe*_*e L 13

import numpy as np
import pandas as pd
df = pd.DataFrame(np.random.rand(4,3))
df.style.applymap(lambda x: 'background-color : yellow' if x>df.iloc[0,0] else '')
Run Code Online (Sandbox Code Playgroud)

df


Psi*_*dom 11

样式文档:

您可以使用DataFrame.style属性应用条件格式,即根据数据中的数据的可视样式.

import pandas as pd
df = pd.DataFrame([[2,3,1], [3,2,2], [2,4,4]], columns=list("ABC"))

df.style.apply(lambda x: ["background: red" if v > x.iloc[0] else "" for v in x], axis = 1)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


编辑:要格式化特定单元格,您可以添加条件检查器来检查元素的名称Series.iteritems()或检查索引enumerate(),例如,如果要从第3列开始格式化,可以使用枚举并检查索引:

df = pd.DataFrame([[2,3,-3], [3,2,7], [2,4,4]], columns=list("ABC"))

df.style.apply(lambda x: ["background-color: #ff33aa" 
                          if (i >= 2 and (v > x.iloc[0] + x.iloc[1] 
                                          or v < x.iloc[0] - x.iloc[1])) 
                          else "" for i, v in enumerate(x)], axis = 1)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述