首页 > 解决方案 > 如何使用 Python 对交替行进行颜色编码,但如果某些列值相同,则行的颜色与前一行相同

问题描述

我有一个制表符分隔的文件,我添加了一些格式并写入 Excel 文件。一个请求是对交替行进行颜色编码,但文件中有一个 doc_no 列,对于具有相同 doc_no 的行,这些行将具有相同的颜色。如下例所示:

这是我想要的输出

我有它,其中交替行用颜色编码,重复的 doc_nos 被高亮显示(我在示例中使用的颜色是为了说明,可能与代码中的颜色不匹配)。我不知道如何获得要求的结果,并希望得到任何帮助。

电流输出

我的代码:

import pandas as pd
import numpy as np
import time

infile = (r'C:\..\test.txt')

#read in tab delimited text file into dataframe
df = pd.read_csv(infile, sep='\t', dtype = str, encoding='cp1252')

#delete columns with all null values
df.dropna(how='all', axis='columns', inplace=True)

#Get Date Range into variable date_range to print as HEADER and remove column from dataframe
date_range = df.iloc[0,0]
df.drop('Date Range', axis=1, inplace=True)

#replace NAN with empty string
df = df.replace(np.nan, '', regex=True)

dtstamp = time.strftime('%m-%d-%Y')

#Writing dataframe to Excel
writer = pd.ExcelWriter(r'C:\..\TEST-'+dtstamp+'.xlsx', engine = 'xlsxwriter')
df.to_excel(writer, sheet_name = 'Sheet1', startrow=2, index=False)

workbook = writer.book
ws = writer.sheets['Sheet1']

#--------------------------color code rows-------------------------------------
rcolor1 = workbook.add_format({'bg_color': '#D3D3D3'})
rcolor2 = workbook.add_format({'bg_color': '#FFE4E1'})                                     

for row in range(3,(len(df.index)+3), 2):
    ws.set_row(row,cell_format=rcolor2)

ws.conditional_format('B3:B'+str(len(df.index)+3),{'type': 'duplicate', 'format': rcolor1})
    
...

writer.save()
workbook.close()

标签: pythonxlsxwriter

解决方案


推荐阅读