我有一个 Pandas 数据框,其中包含根据先前过滤的值和条件。我想在excel中打印我的数据框并根据过滤结果为单元格着色(如果通过:绿色,如果未通过:红色)。这是一个示例代码以及我希望它的结果。
filename='example'
writer = pd.ExcelWriter(f"{filename}.xlsx", engine="xlsxwriter")
workbook = writer.book
df = pd.DataFrame(
[
[0,{'value': 3, 'filter': 'passed'}],
[1,{'value': 4, 'filter': 'not_passed'}],
[2,{'value': 2, 'filter': 'passed'}],
],
columns=['col 1', 'col 2']
)
df['col 2'] = df['col 2'].apply(lambda x: x['value'])
df.to_excel(writer, sheet_name="Sheet1")
green = workbook.add_format({"bg_color": "#C6EFCE", "font_color": "#006100"})
red = workbook.add_format({"bg_color": "#FFC7CE", "font_color": "#9C0006"})
worksheet = writer.sheets["Sheet1"]
writer.save()
最佳答案
使用 for 循环检查 filter value == 'passed'
如果是,您可以将绿色格式应用于此单元格,反之亦然,使用 worksheet.write(row_index,column_index,value,format) 将红色应用于红色。
请注意,Pandas 数据框使用与 Excel 不同的索引方法。值得注意的是,Pandas 从 index=0 开始,Excel 从 index=1 开始。
filename='example'
writer = pd.ExcelWriter(f"{filename}.xlsx", engine="xlsxwriter")
workbook = writer.book
df = pd.DataFrame(
[
[0,{'value': 3, 'filter': 'passed'}],
[1,{'value': 4, 'filter': 'not_passed'}],
[2,{'value': 2, 'filter': 'passed'}],
],
columns=['col 1', 'col 2']
)
# df['col 2'] = df['col 2'].apply(lambda x: x['value'])
df.to_excel(writer, sheet_name="Sheet1")
green = workbook.add_format({"bg_color": "#C6EFCE", "font_color": "#006100"})
red = workbook.add_format({"bg_color": "#FFC7CE", "font_color": "#9C0006"})
worksheet = writer.sheets["Sheet1"]
col_ind = 2
for row_ind in range(len(df)):
value = df.iloc[row_ind, 1]
if value['filter'] == 'passed':
worksheet.write(row_ind+1,col_ind, value['value'], green)
else:
worksheet.write(row_ind+1,2col_ind, value['value'], red)
writer.save()
关于python - 从 Pandas 到excel的颜色格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70156578/