如何为Pandas DataFrame每行首尾非零值上色并保存为Excel文件?
为Pandas DataFrame每行的首尾非零值添加颜色并保存为Excel文件
完整实现代码
import pandas as pd from openpyxl import load_workbook from openpyxl.styles import PatternFill # 定义目标DataFrame df = pd.DataFrame([[0.0, 2.0, 0.0, 0.0, 5.0, 6.0, 7.0], [1.0, 0.0, 1.0, 3.0, 0.0, 0.0, 7.0], [0.0, 0.0, 13.0, 14.0, 0.0, 16.0, 17.0] ], columns=['A', 'B', 'C', 'D', 'E', 'F', 'G']) # 导出初始Excel文件 excel_file = 'marked_non_zero.xlsx' df.to_excel(excel_file, index=False) # 加载文件并编辑样式 wb = load_workbook(excel_file) ws = wb.active # 设置填充颜色(示例为黄色,可自行调整色值) highlight_fill = PatternFill(start_color='FFFF00', end_color='FFFF00', fill_type='solid') # 遍历数据行(跳过表头行) for row_num in range(2, ws.max_row + 1): # 收集当前行非零值的列索引 non_zero_cols = [] for col_num in range(1, ws.max_column + 1): cell_val = ws.cell(row=row_num, column=col_num).value if cell_val != 0.0: non_zero_cols.append(col_num) # 标记首尾非零值 if non_zero_cols: ws.cell(row=row_num, column=non_zero_cols[0]).fill = highlight_fill ws.cell(row=row_num, column=non_zero_cols[-1]).fill = highlight_fill # 保存修改后的文件 wb.save(excel_file)
关键说明
- 依赖安装:提前执行
pip install pandas openpyxl安装所需库。 - 颜色自定义:修改
start_color和end_color的十六进制色值可更换高亮色,比如FFC0CB对应粉色、90EE90对应浅绿色。 - 边界处理:若某行全为0,代码会自动跳过标记逻辑,避免报错。
- 行号逻辑:Excel第一行是DataFrame表头,因此从第2行开始遍历数据行。
内容的提问来源于stack exchange,提问作者Qingyao-sof
相关产品推荐
相关产品推荐

