1

所以,基本上我想将样式应用于单元格并渲染到 html。

这是我到目前为止所做的:

import pandas as pd
import numpy as np
data = [dict(order='J23-X23', num=5, name='foo', value='YES'),
            dict(order='Y23-X24', num=-4, name='bar', value='NO'),
            dict(order='J24-X24', num=6, name='baz', value='NO'),
            dict(order='X25-X24', num=-2, name='foobar', value='YES')]
df = pd.DataFrame(data)

def condformat(row):
    cellBGColor = 'green' if row.value == 'YES' else 'blue'
    color = 'background-color: {}'.format(cellBGColor)
    return (color, color, color, color)

s = df.style.apply(condformat, axis=1)
with open('c:/temp/test.html', 'w') as f:
   f.write(s.render())

我的问题有两个:(1)我使用正确的渲染吗?还是有更好的方法来做到这一点?to_html 给了我什么?(2) 如果我必须添加另一种样式怎么办,比如将格式 (35) 中的 -ve 数字设为红色?

4

1 回答 1

0

因此,在与试错作斗争之后:

s = df.style.apply(condformat, axis=1).applymap(dataframe_negative_coloring)

使用新方法:

def dataframe_negative_coloring(value):
    ''' Colors Dataframe rows with alternate colors.'''
    color = 'red' if value < 0 else 'black'
    return 'color: %s' % color

那里有任何纯粹主义者,如果我能做得更好,请随时提出建议

于 2022-03-01T22:01:46.297 回答