如何为DataFrame每3连续行设同色背景并导出至Excel
为DataFrame每连续3行设置同组背景色
你之前的代码问题在于不管行号,统一返回黄色样式,所以所有行都是同一种颜色。下面给两种实用的实现方式:
方法一:用pandas自带的Styler自定义样式
通过行索引分组,每3行归为一组,同一组用相同背景色,不同组换颜色,实现交替效果:
import pandas as pd # 示例DataFrame,替换成你自己的即可 df = pd.DataFrame({'A': range(10), 'B': range(10, 20)}) def highlight_rows(row): # 按行索引每3行分一组 group = row.name // 3 # 偶数组用浅黄,奇数组用浅蓝,颜色代码可自行调整 if group % 2 == 0: return ['background-color: #fff2cc'] * len(row) else: return ['background-color: #cce5ff'] * len(row) # 应用样式后导出Excel styled_df = df.style.apply(highlight_rows, axis=1) styled_df.to_excel('styled_data.xlsx', engine='openpyxl', index=False)
方法二:直接用xlsxwriter控制格式
如果想直接操作Excel写入过程,用xlsxwriter批量设置行格式更灵活:
import pandas as pd df = pd.DataFrame({'A': range(10), 'B': range(10, 20)}) # 创建Excel写入器 writer = pd.ExcelWriter('grouped_color.xlsx', engine='xlsxwriter') df.to_excel(writer, sheet_name='Sheet1', index=False) workbook = writer.book worksheet = writer.sheets['Sheet1'] # 定义两种背景格式,颜色可自行调整 format_yellow = workbook.add_format({'bg_color': '#fff2cc'}) format_blue = workbook.add_format({'bg_color': '#cce5ff'}) # 数据总行数(加1是因为包含表头行) total_rows = len(df) + 1 # 从第一行数据开始(表头是第0行),每3行一组设置格式 for row_num in range(1, total_rows): group = (row_num - 1) // 3 if group % 2 == 0: worksheet.set_row(row_num, None, format_yellow) else: worksheet.set_row(row_num, None, format_blue) writer.close()
内容的提问来源于stack exchange,提问作者baddy
相关产品推荐
相关产品推荐

