假设我有这样的数据框:
col1 col2 col3 col4
0 A A_1 pass 2
1 A A_2 pass 4
2 A A_1 fail 4
3 A A_1 fail 5
4 A A_1 pass 3
5 A A_2 fail 2
我想把它保存为一个excel文件,然后当我打开它时我想像下面那样突出显示列,我该怎么做?
答案 0 :(得分:2)
您可以使用 Styler.apply
创建样式的 DataFrame 并使用 DataFrame.mask
通过掩码设置行:
def color(x):
c1 = 'background-color: green'
c2 = 'background-color: red'
c = ''
m1 = x.col3.eq('pass')
m2 = x.col3.eq('fail')
df1 = pd.DataFrame(c, index=x.index, columns=x.columns)
df1 = df1.mask(m1, c1).mask(m2, c2)
return df1
df.style.apply(color,axis=None).to_excel('styled.xlsx', engine='openpyxl', index=False)
答案 1 :(得分:1)
你也可以这样做:
from openpyxl import load_workbook
from openpyxl.styles import PatternFill
df.to_excel('my dataframe.xlsx', index=False)
wb = load_workbook('my dataframe.xlsx')
ws = wb.active
for row in ws.iter_rows(min_col=ws.min_column, max_col=ws.max_column,
min_row=ws.min_row+1, max_row=ws.max_row):
for value in row:
if row[2].value == 'pass':
value.fill = PatternFill(fill_type='solid', start_color='00b300', end_color='00b300')
else:
value.fill = PatternFill(fill_type='solid', start_color='ff0000', end_color='ff0000')
wb.save('my dataframe.xlsx')
结果: