[英]How to change values of pandas dataframe based on the first row value
[英]XlsxWriter Pandas change first row cell color based on value
我正在使用以下代码创建一个 excel 表:
writer = pd.ExcelWriter('data.xlsx', engine='xlsxwriter')
data = pd.DataFrame(data={'val1': [True, False],
'val2': [False, True],
'val3': [True, True],
'val4': [True, False],
'val5': [True, True],
'val6': [False, False]},
index=pd.Series([1, 2], name='index'))
data.to_excel(writer, index=False, sheet_name='Sheet1')
workbook = writer.book
ws = writer.sheets['Sheet1']
writer.close()
writer.save()
我想使用以下字典根据值更改列背景颜色:
colors = {'val3': '#FFFF00',
'val4': '#DCE6F1',
'val6': '#FDE9D9'}
到目前为止,我发现的唯一解决方案是使用第二个 for 循环,尝试:
writer = pd.ExcelWriter('data.xlsx', engine='xlsxwriter')
data = pd.DataFrame(data={'val1': [True, False],
'val2': [False, True],
'val3': [True, True],
'val4': [True, False],
'val5': [True, True],
'val6': [False, False]},
index=pd.Series([1, 2], name='index'))
data.to_excel(writer, index=False, sheet_name='Sheet1')
workbook = writer.book
ws = writer.sheets['Sheet1']
d = {
'bold': True,
'text_wrap': False,
'align': 'center',
'valign': 'center',
'border': 1
}
colors = {'val3': '#FFFF00',
'val4': '#DCE6F1',
'val6': '#FDE9D9'}
for col_num, value in enumerate(data.columns.values):
for key in colors:
if key == value:
d['fg_color'] = colors[key]
header_format = workbook.add_format(d)
ws.write(0, col_num, value, header_format)
writer.save()
输出:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.