pandas 数据框到 html - 边界不准确

pandas dataframe to html - border not accurate

我有一个如下所示的数据框

test_id,status,total,cnt_days,age     
1,passed,234%,3,21          
2,passed,54%,5,29
11,failed,21%,4,35
15,failed,20%.21,6,57             
51,passed,23%,21,80     
75,failed,12%,32,43

df1 = pd.read_clipboard(sep=',')

我的objective是

a) 使用 black color

在行和列之间设置深色边框线

b) header

使用 Green 颜色

c) 对总计 > 30%

的行使用 Red 颜色

d) 将样式化数据框转换为 html object

e) 将样式化数据框导出到 .xlsx excel 文件

所以,在这个 的帮助下,我尝试了以下

def highlight(row):
    if row['total'] > 30:
        return ['background-color: red'] * len(row)
    else:
        return [''] * len(row)

s = data.style.apply(highlight, axis=1)
    #data['Total'] = data['Total'].astype(str) + "%"
    s = s.set_properties(
    **{'border': '1px black solid !important'}).set_table_styles([{
        'selector': '.col_heading',
        'props': 'background-color: green; color: black;'
    }])
    output = s.to_html(index=False)

但这会产生不正确的输出,不同单元格和边框之间存在间隙。另一个问题是我的 Total 列中有 % 符号。我如何使用它来进行 > 30% 检查并最终在输出 table.

中显示 % symbol

所以,我希望我的输出如下所示。您可以看到每个单元格和行之间的边框如何没有间隙。我希望输出像 excel table.

s = s.set_properties(
    **{'border': '1px black solid !important'}).set_table_attributes(
    'style="border-collapse:collapse"').set_table_styles([{
        'selector': '.col_heading',
        'props': 'background-color: green; color: black; border-collapse: collapse; border: 1px black solid !important;'
    }])

输出