我有一个数据框
df = pd.DataFrame(columns = ['id', 'name', 'age'])
df.loc[len(df), :] = [1, 'John', 21]
df.loc[len(df), :] = [2, 'Mary', 19]
df.loc[len(df), :] = [3, 'Ann', 27]
df.loc[len(df), :] = [4, 'Ben', 18]
我想使用xlsxwriter
将其保存到excel文件中。
但是,我希望大于20的age
为红色。
换句话说,21
和27
在excel文件中应该显示为红色。
如何做到?
答案 0 :(得分:1)
您可以在xlsxwriter中使用条件格式,如下所示:
import pandas as pd
# Create a Pandas dataframe from some data.
df = pd.DataFrame(columns = ['id', 'name', 'age'])
df.loc[len(df), :] = [1, 'John', 21]
df.loc[len(df), :] = [2, 'Mary', 19]
df.loc[len(df), :] = [3, 'Ann', 27]
df.loc[len(df), :] = [4, 'Ben', 18]
# 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.book
worksheet = writer.sheets['Sheet1']
# Add a format. Light red fill with dark red text.
format1 = workbook.add_format({'bg_color': '#FFC7CE',
'font_color': '#9C0006'})
# Set the conditional format range.
start_row = 1
start_col = 3
end_row = len(df)
end_cold = start_col
# Apply a conditional format to the cell range.
worksheet.conditional_format(start_row, start_col, end_row, end_cold,
{'type': 'cell',
'criteria': '>',
'value': 20,
'format': format1})
# Close the Pandas Excel writer and output the Excel file.
writer.save()
输出:
答案 1 :(得分:0)
这对我来说对字符串不起作用。
writer = pd.ExcelWriter('ProjectSummaryStatusScriptOutput.xlsx', engine='xlsxwriter')
df_to_csv.to_excel(writer, sheet_name='Sheet1')
# Get the xlsxwriter workbook and worksheet objects.
workbook = writer.book
worksheet = writer.sheets['Sheet1']
# Add a format. Light red fill with dark red text.
format1 = workbook.add_format({'bg_color': '#ffff00'})
format2 = workbook.add_format({'bg_color': '##ff0000'})
format3 = workbook.add_format({'bg_color': '#13bd00'})
# Set the conditional format range.
start_row = 2
start_col = 2
end_row = len(df)
end_cold = len(df.columns)
# Apply a conditional format to the cell range.
worksheet.conditional_format('E2:K56',
{'type': 'cell',
'criteria': '=',
'value': 'Red',
'format': format1})
worksheet.conditional_format('E2:K56',
{'type': 'cell',
'criteria': '=',
'value': 'Yellow',
'format': format2})
worksheet.conditional_format('E2:K56',
{'type': 'cell',
'criteria': '=',
'value': 'Green',
'format': format3})
# Close the Pandas Excel writer and output the Excel file.
writer.save()
我的输出没有任何格式