python - 如何使用 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()
解决方案
推荐阅读
- python - Flask 应用程序:是否可以替代 csv 文件的使用
- python - 如何用漂亮的汤处理班级变化
- angular - 角离子电容器 | 为什么即使是简单的动画也会滞后
- php - 在 php 中加入两个具有匹配节点的 XML 文件
- sql - SQL /moment -- 选择从现在到 5 秒前的日期
- flutter - 保存到图库后如何显示/删除图像?
- laravel - 迁移中的 Laravel postgresql 序列不起作用
- angular - `retryWhen`过期后如何返回值?(对于 `canActivate` 守卫)
- c# - 流利的断言:如何断言“集合中的单个等效项”?
- xml - 使用 Logstash 解析 XML 日志