我有3个数据帧difference_df,validatedOutput和initial_output都是相同的维度。此外,difference_df定义如下。
difference_df = validatedOutput == initial_output
我想将validatedOutput写入Excel文件,并将所有这些值着色为黄色,其中validatedOutput!= initial_output 为了做到这一点,我使用条件worksheet.write方法根据difference_df的值为单元格着色。以下是示例代码:
workbook = writer.book
worksheet = writer.sheets['Upload_Sheet']
yellow_format = workbook.add_format()
yellow_format.set_pattern(1) # This is optional when using a solid fill.
yellow_format.set_bg_color('#FFFF00')
#orange format. This color is for header
orange_format = workbook.add_format()
orange_format.set_pattern(1) # This is optional when using a solid fill.
orange_format.set_bg_color('#FFA500')
for i in range(len(difference_df.columns)):
for j in range(len(difference_df.index)):
op = validatedOutput.iloc[j,i]
ip = initial_output.iloc[j,i]
if pd.isnull(op) and pd.isnull(ip) :
continue
elif pd.notnull(op) and difference_df.iloc[j, i]:
worksheet.write(j+1, i, op)
elif pd.notnull(op) :
worksheet.write(j+1, i, op, yellow_format)
问题是这个方法非常慢,因为我使用for循环访问数据帧的每个元素,然后将其写入文件。 有没有更快的方法来做同样的事情?
答案 0 :(得分:1)
我尝试将两个数据集(验证和初始)写入Excel文件的两个独立区域,例如:两个工作表,然后在Excel中使用条件格式进行着色,而不是通过Python代码指定颜色。