使用 pandas xlswriter 模块用 conditional_format 格式化整行
Format entire row with conditional_format using pandas xlswriter module
我正在使用 pandas xlswriter 模块创建 excel 报告。在相同的代码片段下方。
number_rows = len(df.index)
//df is dataframe
writer = pd.ExcelWriter("Report_1.xlsx",engine='xlsxwriter')
df.to_excel(writer,"report")
workbook = writer.book
worksheet = writer.sheets['report']
# Define range for the color formatting
color_range = "A2:F{}".format(number_rows+1)
format1 = workbook.add_format({'bg_color': '#FFC7CE',
'font_color': '#9C0006'})
worksheet.conditional_format(color_range, {'type': 'text',
'criteria' : 'containing',
'value': 'SUCCESS',
'format': format1})
我想根据单元格值 (=SUCCESS) 突出显示一行 ('bg_color': '#FFC7CE', 'font_color': '#9C0006')。但是当我使用 "conditional_format" 时,它只适用于那个特定的单元格。如果“条件”与单元格值匹配,是否可以将格式应用于整行?
我在下面提供了一个完全可重现的示例,它使用了 Excel (Link here) 中的 INDIRECT()
函数。请注意,我已将范围设置为 $A:$B
,但如果您有更多列,您可以将其扩展到不同的范围。
import pandas as pd
df = pd.DataFrame({"Name": ['A', 'B', 'C', 'D', 'E'],
"Status": ['SUCCESS', 'FAIL', 'SUCCESS', 'FAIL', 'FAIL']})
number_rows = len(df.index) + 1
writer = pd.ExcelWriter('Report_1.xlsx', engine='xlsxwriter')
df.to_excel(writer, sheet_name='Sheet1', index=False)
workbook = writer.book
worksheet = writer.sheets['Sheet1']
format1 = workbook.add_format({'bg_color': '#FFC7CE',
'font_color': '#9C0006'})
worksheet.conditional_format("$A:$B$%d" % (number_rows),
{"type": "formula",
"criteria": '=INDIRECT("B"&ROW())="SUCCESS"',
"format": format1
}
)
workbook.close()
预期输出为 excel:
我正在使用 pandas xlswriter 模块创建 excel 报告。在相同的代码片段下方。
number_rows = len(df.index)
//df is dataframe
writer = pd.ExcelWriter("Report_1.xlsx",engine='xlsxwriter')
df.to_excel(writer,"report")
workbook = writer.book
worksheet = writer.sheets['report']
# Define range for the color formatting
color_range = "A2:F{}".format(number_rows+1)
format1 = workbook.add_format({'bg_color': '#FFC7CE',
'font_color': '#9C0006'})
worksheet.conditional_format(color_range, {'type': 'text',
'criteria' : 'containing',
'value': 'SUCCESS',
'format': format1})
我想根据单元格值 (=SUCCESS) 突出显示一行 ('bg_color': '#FFC7CE', 'font_color': '#9C0006')。但是当我使用 "conditional_format" 时,它只适用于那个特定的单元格。如果“条件”与单元格值匹配,是否可以将格式应用于整行?
我在下面提供了一个完全可重现的示例,它使用了 Excel (Link here) 中的 INDIRECT()
函数。请注意,我已将范围设置为 $A:$B
,但如果您有更多列,您可以将其扩展到不同的范围。
import pandas as pd
df = pd.DataFrame({"Name": ['A', 'B', 'C', 'D', 'E'],
"Status": ['SUCCESS', 'FAIL', 'SUCCESS', 'FAIL', 'FAIL']})
number_rows = len(df.index) + 1
writer = pd.ExcelWriter('Report_1.xlsx', engine='xlsxwriter')
df.to_excel(writer, sheet_name='Sheet1', index=False)
workbook = writer.book
worksheet = writer.sheets['Sheet1']
format1 = workbook.add_format({'bg_color': '#FFC7CE',
'font_color': '#9C0006'})
worksheet.conditional_format("$A:$B$%d" % (number_rows),
{"type": "formula",
"criteria": '=INDIRECT("B"&ROW())="SUCCESS"',
"format": format1
}
)
workbook.close()
预期输出为 excel: