如何在Python中为pandas数据框设置样式,并为条件格式设置输入的上限和下限容差级别?

v1l68za4  于 2023-06-04  发布在  Python
关注(0)|答案(1)|浏览(407)

我有一个dataframe,我想导出到Excel文件与一些背景样式的每一列。因为每一列都有自己的上限和下限来检查条件格式。
我试过这样做。

for count, value in enumerate(headers):
    df.style.apply(Back_color, upper_Tol[count], lower_Tol[count], subset = value)

def Back_color(col, upper, lower):
    # empty property list to be filled in the loop
    props = ['font-weight: bold;'] * len(col)
    for idx, value in enumerate(col):
        # color max value lightgreen
        if lower < value < upper:
            props[idx] += 'background-color: lightgreen;'
        # color min value lightcoral
        elif value < lower or value > upper:
            props[idx] += 'background-color: lightcoral'
        else:
            props[idx] += 'background-color: white'
    return props

随着循环的开始,它立即给出错误:TypeError:apply()为参数“subset”获取了多个值
我不清楚为什么,因为我只是将<class 'str'>解析为参数
谁能帮我解决这个问题?.因为我对样式也很不熟悉,可能是定义写错了,但我现在还没有走那么远。

y4ekin9u

y4ekin9u1#

IIUC,您可以用途:

lower_Tol, upper_Tol = [0, 6, 0], [5, 9, 3]

def back_color(col, upper, lower):
    return [
        "background-color: lightgreen;font-weight: bold" if l < v < u
        else "background-color: lightcoral;font-weight: bold"
            for (v, u, l) in zip(col, upper, lower)
    ]

s = df.style.apply(back_color, upper=upper_Tol, lower=lower_Tol, axis=1)

#s.to_excel("ouput.xlsx", index=False) # uncomment this line to make a spreadsheet

输出:

  • 使用的输入:*
np.random.seed(1)

df = pd.DataFrame(np.random.randint(0, 9, size=(5, 3)),
                  columns=["column1", "column2", "column3"])

相关问题