从Pandas DataFrame生成报表:如何为HTML表头设置三种背景色?
Pandas DataFrame表头分组设置不同背景色实现方案
可以通过Pandas的Styler工具类,结合自定义样式函数实现表头分组着色,具体步骤如下:
1. 构造示例DataFrame
先将你提供的示例数据转换为标准DataFrame(注意原数据中的逗号是小数点,需替换后转数值):
import pandas as pd data = { 'A': [11, 24, 19], 'B': [10, 10, 20], 'C': [9.7, 9.1, 9.9], 'D': [-2.3, 0.2, 3.91], 'E': [802, 725, 798], 'F': [64.4, 66.1, 58.3] } df = pd.DataFrame(data)
2. 定义表头着色逻辑
编写函数,根据列名所属分组返回对应背景色样式:
def color_header_groups(row): # 映射分组与对应背景色 group_colors = { 'blue': ['A', 'B'], 'green': ['C', 'D'], 'yellow': ['E', 'F'] } styles = [] for col_name in row.index: if col_name in group_colors['blue']: styles.append('background-color: #1E90FF') elif col_name in group_colors['green']: styles.append('background-color: #32CD32') elif col_name in group_colors['yellow']: styles.append('background-color: #FFFF00') else: styles.append('') return styles
3. 应用样式并输出报表
通过Styler.apply方法将样式作用于表头行,支持直接展示或导出为HTML报表:
# 应用样式到表头行(索引为0的行) styled_df = df.style.apply(color_header_groups, axis=1, subset=pd.IndexSlice[0, :]) # 导出为HTML报表文件 styled_df.to_html('colored_header_report.html') # Jupyter Notebook中直接渲染展示 styled_df
补充说明
- 颜色值可使用CSS颜色名称(如
'blue')或十六进制代码,后者能更精准控制色调; - 若为多级表头,只需调整
subset参数和函数内的列名判断逻辑即可适配。
内容的提问来源于stack exchange,提问作者maciej.o
相关产品推荐
相关产品推荐

