猿问

将新值与之前的值进行比较,如果在 Excel 中不相同则进行标记(使用 Python)

我在 Excel 中有一个数据框 df,其中包含我希望与以前的值进行比较的值。如果当前值与之前的值不比较,我希望突出显示 Excel 中的单元格。


这是我的数据:


COL1  match

9     1  False

8     3  False

2     2  True

3     1  False

4     2  False

5     2  False

期望的结果:


df['match'] = df.COL1.eq(df.COL1.shift())

print (df)



COL1  match

9     1  False

8     3  False

2     2  True

3     1  False

4     2  False

5     2  False

并突出显示 Excel 中的“False”值


这就是我正在做的:


import xlsxwriter

workbook = xlsxwriter.Workbook('c:\\temp\\df.xlsx')

worksheet = workbook.add_worksheet()


def highlight_cells():

return ['background-color: yellow']

df.style.apply(highlight_cells)     


df['match'] = df.COL1.eq(df.COL1.shift())

我不确定如何将所有这些放在一起,最终突出显示 Excel 中与以前的值不匹配的任何单元格。我目前正在研究。


任何建议都将不胜感激。


潇潇雨雨
浏览 103回答 1
1回答

弑天下

您可以通过对单元格应用 Excel 条件格式来实现此目的,如下所示:import pandas as pd# Create a Pandas dataframe from some data.df = pd.DataFrame({'Data1': [10, 20, 30, 20, 15, 30, 45],                   'Data2': [11, 20, 30, 21, 15, 31, 45]})# Create a Pandas Excel writer using XlsxWriter as the engine.writer = pd.ExcelWriter('pandas_conditional.xlsx', engine='xlsxwriter')# Convert the dataframe to an XlsxWriter Excel object.df.to_excel(writer, sheet_name='Sheet1')# Get the xlsxwriter workbook and worksheet objects.workbook  = writer.bookworksheet = writer.sheets['Sheet1']# Add a format. Green fill with dark green text.green_format = workbook.add_format({'bg_color': '#C6EFCE',                                    'font_color': '#006100'})# Apply a conditional format to the cell range.worksheet.conditional_format(1, 2, 7, 2, {'type':     'cell',                                          'criteria': 'equal to',                                          'value':    '=$B2',                                          'format':   green_format})# Close the Pandas Excel writer and output the Excel file.writer.save()输出:
随时随地看视频慕课网APP
我要回答