如何为Pandas DataFrame同列不同行相等值设置样式(跳过首列)
Pandas实现列内值全相等单元格着色(跳过第一列)
示例DataFrame
| Value 1 | Value 2 | Value 3 |
|---|---|---|
| 6 | 5 | 6 |
| 6 | 5 | 10 |
需求说明
跳过第一列,对同一列中所有行值完全相等的单元格设置背景色(示例中Value 2列需被着色)。
解决方案
利用Pandas的Styler对象,结合按列处理的apply方法实现:
- 创建示例DataFrame
import pandas as pd df = pd.DataFrame({ 'Value 1': [6, 6], 'Value 2': [5, 5], 'Value 3': [6, 10] })
- 定义着色函数
def color_equal_column(col): # 跳过第一列 if col.name == df.columns[0]: return [''] * len(col) # 判断列内所有值是否唯一(即全相等) if col.nunique() == 1: # 设置背景色为浅绿色,可自行调整颜色代码 return ['background-color: #90EE90'] * len(col) return [''] * len(col)
- 应用样式并展示
styled_df = df.style.apply(color_equal_column, axis=0) # 在Jupyter环境运行可直接显示带样式的表格 styled_df
补充说明
- 导出带样式的结果:
- 导出为HTML:
styled_df.to_html('styled_table.html') - 导出为Excel:需安装
openpyxl库,执行styled_df.to_excel('styled_table.xlsx', engine='openpyxl')
- 导出为HTML:
- 背景色代码可按需替换,比如
#FFCCCB(浅红色)等。
内容的提问来源于stack exchange,提问作者yunastrian
相关产品推荐
相关产品推荐

