如何结合Python两段代码,标记Excel指定列中前三数据为红色?
实现Excel中指定列前三大数据(含并列)的红色标记
实现思路
- 用
pandas读取Excel文件,筛选出AAA列前三大(含并列)的数据行,记录这些行的位置 - 用
openpyxl打开原Excel文件,定位到对应行的AAA列单元格,将字体设置为红色
完整代码
import pandas as pd import openpyxl from openpyxl.styles import Font # 第一步:用pandas筛选目标行 df = pd.read_excel('test.xlsx') # 获取AAA列前三大(含并列)的数据行 top_rows = df.nlargest(3, 'AAA', keep='all') # 转换为Excel行号(pandas索引从0开始,Excel行号从1开始) target_row_nums = top_rows.index + 1 # 转换为Excel列号(pandas列索引从0开始,Excel列号从1开始) aaa_col_num = df.columns.get_loc('AAA') + 1 # 第二步:用openpyxl设置字体颜色 wb = openpyxl.load_workbook('test.xlsx') ws = wb.active # 创建红色字体(颜色代码FF0000对应红色) red_font = Font(size=12, bold=True, color="FF0000") # 遍历目标行,设置对应单元格的字体 for row_num in target_row_nums: ws.cell(row=row_num, column=aaa_col_num).font = red_font # 保存修改后的文件 wb.save('after.xlsx')
关键说明
nlargest(3, 'AAA', keep='all'):keep='all'参数确保所有并列的前三大数据都会被选中,不会遗漏- 行/列号转换:pandas的索引体系从0开始,而Excel的行、列编号从1开始,必须做+1转换才能定位到正确的单元格
- 颜色代码:原代码中的
0000FF是蓝色,替换为FF0000即可实现红色字体标记
内容的提问来源于stack exchange,提问作者Winna
相关产品推荐
相关产品推荐

