通过Python在Excel中为单元格着色的更快方法

时间:2016-06-23 03:49:41

标签: python excel pandas

我有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循环访问数据帧的每个元素,然后将其写入文件。 有没有更快的方法来做同样的事情?

1 个答案:

答案 0 :(得分:1)

我尝试将两个数据集(验证和初始)写入Excel文件的两个独立区域,例如:两个工作表,然后在Excel中使用条件格式进行着色,而不是通过Python代码指定颜色。